Nem felügyelt típusok (C#-referencia)

A típus nem felügyelt típus , ha az alábbi típusok valamelyike:

  • sbyte, byte, short, ushort, int, uint, long, ulongnint, , nuint, char, float, , double, , decimalvagybool
  • Tetszőleges enumerálási típus
  • Bármilyen mutatótípus
  • Olyan tuple, amelynek tagjai mind nem felügyelt típusúak
  • Minden olyan felhasználó által definiált szerkezettípus , amely csak nem felügyelt típusú mezőket tartalmaz.

A kényszer használatával unmanaged megadhatja, hogy egy típusparaméter nem mutató, nem null értékű nem felügyelt típus.

A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.

A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.

Jótanács

Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.

Az olyan strukturált szerkezettípus, amely csak nem felügyelt típusú mezőket tartalmaz, szintén nem felügyelt, ahogyan az alábbi példa is mutatja:

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

Az általános struktúra definiálhatja a nem felügyelt és a felügyelt strukturált típusokat is. Az előző példa egy általános szerkezetet Coords<T> határoz meg, és példákat mutat be a nem felügyelt strukturált típusokra. A felügyelt típusra példa: Coords<object>. Azért van felügyelve, mert a típus mezői object vannak kezelve. Ha azt szeretné, hogy az összes létrehozott típus nem felügyelt típusok legyenek, használja a unmanaged korlátozást egy általános szerkezet definíciójában:

public struct Coords<T> where T : unmanaged
{
    public T X;
    public T Y;
}

C# nyelvspecifikáció

További információ: A C# nyelv specifikációjánakMutatótípusok szakasza.

Lásd még