Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Typ ist ein nicht verwalteter Typ , wenn es sich um einen der folgenden Typen handelt:
-
sbyte,byte, ,shortushortintuint,long, ,ulong,nint, odernuintcharfloatdoubledecimalbool - Beliebiger Enumerationstyp
- Beliebiger Zeigertyp
- Ein Tupel , dessen Member ein nicht verwalteter Typ sind
- Jeder benutzerdefinierte Strukturtyp , der nur Felder nicht verwalteter Typen enthält.
Sie können die unmanaged Einschränkung verwenden, um anzugeben, dass ein Typparameter ein nicht zeigerfreier, nicht nullwertiger nicht verwalteter Typ ist.
Ein konstruierter Strukturtyp, der nur Felder nicht verwalteter Typen enthält, ist ebenfalls nicht verwaltet, wie im folgenden Beispiel gezeigt:
using System;
public struct Coords<T>
{
public T X;
public T Y;
}
public class UnmanagedTypes
{
public static void Main()
{
DisplaySize<Coords<int>>();
DisplaySize<Coords<double>>();
}
private unsafe static void DisplaySize<T>() where T : unmanaged
{
Console.WriteLine($"{typeof(T)} is unmanaged and its size is {sizeof(T)} bytes");
}
}
// Output:
// Coords`1[System.Int32] is unmanaged and its size is 8 bytes
// Coords`1[System.Double] is unmanaged and its size is 16 bytes
Eine generische Struktur kann die Quelle von nicht verwalteten und verwalteten erstellten Typen sein. Im vorherigen Beispiel wird eine generische Struktur Coords<T> definiert und die Beispiele für nicht verwaltete konstruierte Typen dargestellt. Das Beispiel für einen verwalteten Typ ist Coords<object>. Sie wird verwaltet, da sie über die Felder des object Typs verfügt, die verwaltet werden. Wenn alle konstruierten Typen nicht verwaltet werden sollen, verwenden Sie die unmanaged Einschränkung in der Definition einer generischen Struktur:
public struct Coords<T> where T : unmanaged
{
public T X;
public T Y;
}
C#-Sprachspezifikation
Weitere Informationen finden Sie im Abschnitt " Zeigertypen " der C#-Sprachspezifikation.