Yönetilmeyen türler (C# Başvurusu)

Bir tür, aşağıdaki türlerden biri ise, yönetilmeyen bir türdür :

  • sbyte,,, byte short ushort , int , uint , long , ulong , char , float , double , decimal , veya bool
  • Herhangi bir numaralandırma türü
  • Herhangi bir işaretçi türü
  • Yalnızca yönetilmeyen türlerin ve C# 7,3 ve önceki sürümlerde bulunan alanları içeren Kullanıcı tanımlı Yapı türleri, oluşturulmuş bir tür değildir (en az bir tür bağımsız değişkeni içeren bir tür)

C# 7,3 ' den başlayarak, bir tür parametresinin işaretçi olmayan, null atanamaz yönetilmeyen bir tür olduğunu belirtmek için unmanaged kısıtlamasını kullanabilirsiniz.

C# 8,0 ' den başlayarak, aşağıdaki örnekte gösterildiği gibi, yönetilmeyen türlerin alanlarını içeren oluşturulmuş bir yapı türü de yönetilmdir:

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

Genel bir yapı, yönetilmeyen ve yönetilmeyen oluşturulmuş türlerin kaynağı olabilir. Yukarıdaki örnek, genel bir struct tanımlar Coords<T> ve yönetilmeyen oluşturulmuş türlerin örneklerini gösterir. Yönetilmeyen bir tür örneği Coords<object> . Yönetilmeyen değildir çünkü türünde alanları vardır object , yönetilmeyen değildir. Oluşturulan Tüm türlerin yönetilmeyen türler olmasını istiyorsanız, unmanaged genel bir yapının tanımında kısıtlamayı kullanın:

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

C# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin işaretçi türleri bölümüne bakın.

Ayrıca bkz.