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. işlecin bağımsız değişkeni sizeof yönetilmeyen bir türün adı veya yönetilmeyen bir tür olması kısıtlanmış bir tür parametresi olmalıdır.

işleci sizeof güvenli olmayan bir bağlam gerektirir. Ancak, aşağıdaki tabloda sunulan ifadeler, derleme zamanında karşılık gelen sabit değerlere değerlendirilir ve güvenli olmayan bir bağlam gerektirmez:

Expression Sabit değer
sizeof(sbyte) 1
sizeof(byte) Kategori 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

İşlecin işleneni sizeof bir sabit listesi türünün adı olduğunda da güvenli olmayan bir bağlam kullanmanız gerekmez.

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

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)}");
    }
}

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

C# dili belirtimi

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

Ayrıca bkz.