Sdílet prostřednictvím


Nespravované typy (referenční dokumentace jazyka C#)

Typ je nespravovaný typ , pokud se jedná o některý z následujících typů:

  • sbyte, byte, , short, ushort, int, uintlongulongnintnuintcharfloatdoubledecimalnebobool
  • Libovolný typ výčtu
  • Libovolný typ ukazatele
  • Řazená kolekce členů, jejíž členy jsou všechny nespravované typy
  • Jakýkoli uživatelem definovaný typ struktury , který obsahuje pouze pole nespravovaných typů.

Pomocí omezení můžete unmanaged určit, že parametr typu je nespravovaný typ bez hodnoty null.

Referenční dokumentace jazyka C# dokumentuje naposledy vydané verze jazyka C#. Obsahuje také počáteční dokumentaci k funkcím ve verzi Public Preview pro nadcházející jazykovou verzi.

Dokumentace identifikuje všechny funkce, které byly poprvé představeny v posledních třech verzích jazyka nebo v aktuálních verzích Public Preview.

Návod

Informace o tom, kdy byla funkce poprvé představena v jazyce C#, najdete v článku o historii verzí jazyka C#.

Vytvořený typ struktury, který obsahuje pole nespravovaných typů, je také nespravovaný, jak ukazuje následující příklad:

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

Obecná struktura může definovat nespravované i spravované konstruované typy. Předchozí příklad definuje obecnou strukturu Coords<T> a představuje příklady nespravovaných konstruovaných typů. Příkladem spravovaného typu je Coords<object>. Spravuje se, protože má pole object typu, která se spravují. Pokud chcete, aby všechny konstruované typy byly nespravované typy, použijte unmanaged omezení v definici obecné struktury:

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

Specifikace jazyka C#

Další informace naleznete v části Typy ukazatelůspecifikace jazyka C#.

Viz také