Aracılığıyla paylaş


sizeof işleci - Belirli bir tür için bellek gereksinimlerini belirleme

sizeof işleci, belirli bir türdeki değişkenin kapladığı bayt sayısını döndürür. Güvenli kodda, işlecin bağımsız değişkeni sizeof yerleşik bir yönetilmeyen türün adı olmalıdır.

C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.

Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.

Tavsiye

Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.

Aşağıdaki tabloda sunulan ifadeler, derleme zamanında karşılık gelen sabit değerlere göre değerlendirilir ve güvenli olmayan bir bağlam gerektirmez:

İfade Sabit değer
sizeof(sbyte) 1
sizeof(byte) 1
sizeof(short) 2
sizeof(ushort) 2
sizeof(int) 4
sizeof(uint) 4
sizeof(long) 8
sizeof(ulong) 8
sizeof(char) 2
sizeof(float) 4
sizeof(double) 8
sizeof(decimal) 16
sizeof(bool) 1

Yerleşik, yönetilmeyen bir türün boyutu bir derleme zamanı sabitidir.

Güvenli olmayan kodda aşağıdaki gibi kullanabilirsinizsizeof:

  • Yönetilmeyen bir tür olacak şekilde kısıtlanmış bir tür parametresi, çalışma zamanında bu yönetilmeyen türün boyutunu döndürür.
  • Yönetilen tür veya işaretçi türü başvuruda bulunan nesnenin boyutunu değil, başvurunun veya işaretçinin boyutunu döndürür.

Aşağıdaki örnekte sizeof işlecinin kullanımı gösterilmektedir:

public struct Point
{
    public Point(byte tag, double x, double y) => (Tag, X, Y) = (tag, x, y);

    public byte Tag { get; }
    public double X { get; }
    public double Y { get; }
}

public class SizeOfOperator
{
    public static void Main()
    {
        Console.WriteLine(sizeof(byte));  // output: 1
        Console.WriteLine(sizeof(double));  // output: 8

        DisplaySizeOf<Point>();  // output: Size of Point is 24
        DisplaySizeOf<decimal>();  // output: Size of System.Decimal is 16

        unsafe
        {
            Console.WriteLine(sizeof(Point*));  // output: 8
        }
    }

    static unsafe void DisplaySizeOf<T>() where T : unmanaged
    {
        Console.WriteLine($"Size of {typeof(T)} is {sizeof(T)}");
    }
}

sizeof işleci, yönetilen bellekteki ortak dil çalışma zamanı tarafından ayrılan bayt sayısını döndürür. yapı türleri için, yukarıdaki örnekte gösterildiği gibi bu değer herhangi bir doldurma içerir. sizeof işlecinin sonucu, yönetilmeyen Marshal.SizeOf türün boyutunu döndüren yönteminin sonucundan farklı olabilir.

Önemli

sizeof tarafından döndürülen değer, yönetilmeyen bellekteki türün boyutunu döndüren Marshal.SizeOf(Object)sonucundan farklı olabilir.

C# dil belirtimi

Daha fazla bilgi için, C# dil belirtimininboyut işleci bölümüne bakın.

Ayrıca bkz.