Delen via


Niet-beheerde typen (C#-verwijzing)

Een type is een niet-beheerd type als dit een van de volgende typen is:

U kunt de unmanaged beperking gebruiken om op te geven dat een typeparameter een niet-aanwijzer, niet-nullable onbeheerd type is.

De C#-taalreferentiedocumenten de laatst uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.

De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.

Aanbeveling

Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.

Een samengesteld structtype dat alleen velden van niet-beheerde typen bevat, is ook onbeheerd, zoals in het volgende voorbeeld wordt weergegeven:

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

Een algemene struct kan zowel niet-beheerde als beheerde samengestelde typen definiëren. In het voorgaande voorbeeld wordt een algemene struct Coords<T> gedefinieerd en worden voorbeelden weergegeven van niet-beheerde samengestelde typen. Het voorbeeld van een beheerd type is Coords<object>. Het wordt beheerd omdat het de velden van het object type bevat, die wordt beheerd. Als u wilt dat alle samengestelde typen niet-beheerde typen zijn, gebruikt u de unmanaged beperking in de definitie van een algemene struct:

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

C#-taalspecificatie

Zie de sectie Aanwijzertypen van de C#-taalspecificatie voor meer informatie.

Zie ook