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, sizeof işlecinin bağımsız değişkeni, yönetilmeyen tür adı veya kısıtlanmış yönetilmeyen bir tür olması için tür parametresi olmalıdır. Yönetilmeyen türler; tüm sayısal türleri, numaralandırma türlerini ve üyelerinin tamamı yönetilmeyen türlerden oluşan demet ve yapı türlerini içerir.

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

Güvenli olmayan kodda, sizeof’a verilen bağımsız değişken, kısıtlanmamış tür parametreleri de dahil olmak üzere, işaretçi türlerini ve yönetilen türleri içerebilir. Örnek olarak object ve stringverilebilir.

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 bellekte türün boyutunu döndüren Marshal.SizeOf yönteminin sonucundan farklı olabilir.

Güvenli olmayan kodda, bağımsız değişken yönetilen bir tür olduğunda, sizeof işleci bu türdeki bir örnek için ayrılan bayt sayısını değil başvurunun boyutunu döndürür.

Ö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.