Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En typ är en ohanterad typ om det är någon av följande typer:
- 
              sbyte,byte,short,ushort,int,uint,long,ulong,nint,nuint,char,float, ,double,decimalellerbool
- Alla uppräkningstyper
- Valfri pekartyp
- En tupppel vars medlemmar alla är av ohanterad typ
- Alla användardefinierade structtyper som endast innehåller fält av ohanterade typer.
Du kan använda villkoretunmanaged för att ange att en typparameter är en icke-pekare, icke-nullbar ohanterad typ.
En konstruerad structtyp som endast innehåller fält av ohanterade typer är också ohanterad, vilket visas i följande exempel:
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
En allmän struct kan vara källan till både ohanterade och hanterade konstruerade typer. Föregående exempel definierar en allmän struct Coords<T> och visar exempel på ohanterade konstruktionstyper. Exemplet på en hanterad typ är Coords<object>. Den hanteras eftersom den har fälten av typen object , som hanteras. Om du vill att alla konstruerade typer ska vara ohanterade typer använder du villkoret unmanaged i definitionen av en allmän struct:
public struct Coords<T> where T : unmanaged
{
    public T X;
    public T Y;
}
Språkspecifikation för C#
Mer information finns i avsnittet Pekartyper i C#-språkspecifikationen.