Aracılığıyla paylaş


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

Tür, aşağıdaki türlerden biriyse yönetilmeyen bir türdür:

  • sbyte, byte, short, , ushort, int, uint, long, , ulong, nint, nuint, , charfloat, doubledecimalveyabool
  • Herhangi bir sabit listesi türü
  • Herhangi bir işaretçi türü
  • Üyeleri yönetilmeyen türde olan bir tanımlama grubu
  • Yalnızca yönetilmeyen tür alanlarını içeren kullanıcı tanımlı herhangi bir yapı türü.

Tür parametresinin unmanaged işaretçi olmayan, null atanamayan yönetilmeyen bir tür olduğunu belirtmek için kısıtlamayı kullanabilirsiniz.

Aşağıdaki örnekte gösterildiği gibi, yalnızca yönetilmeyen tür alanlarını içeren yapılandırılmış bir yapı türü de yönetilmez:

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 yapı hem yönetilmeyen hem de yönetilen yapılandırılmış türlerin kaynağı olabilir. Yukarıdaki örnek genel bir yapı Coords<T> tanımlar ve yönetilmeyen yapılandırılmış türlerin örneklerini sunar. Yönetilen tür örneği: Coords<object>. Yönetilen türündeki alanlara object sahip olduğundan yönetilir. Oluşturulan tüm türlerin yönetilmeyen türler olmasını istiyorsanız, genel yapı tanımında kısıtlamayı kullanınunmanaged:

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

C# dili belirtimi

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

Ayrıca bkz.