sizeof işleci (C# başvuru)sizeof operator (C# reference)

sizeof İşleci, verilen türdeki bir değişken tarafından bulunan bayt sayısını döndürür.The sizeof operator returns the number of bytes occupied by a variable of a given type. sizeof İşlecin bağımsız değişkeni, yönetilmeyen bir türün veya yönetilmeyen tür olarak Kısıtlanmış bir tür parametresinin adı olmalıdır.The argument to the sizeof operator must be the name of an unmanaged type or a type parameter that is constrained to be an unmanaged type.

Operatör güvenli olmayan bir bağlam gerektiriyor. sizeofThe sizeof operator requires an unsafe context. 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:However, the expressions presented in the following table are evaluated in compile time to the corresponding constant values and don't require an unsafe context:

İfadeExpression Sabit değerConstant value
sizeof(sbyte) 1.1
sizeof(byte) 1.1
sizeof(short) 22
sizeof(ushort) 22
sizeof(int) 44
sizeof(uint) 44
sizeof(long) 88
sizeof(ulong) 88
sizeof(char) 22
sizeof(float) 44
sizeof(double) 88
sizeof(decimal) 1616
sizeof(bool) 1.1

Ayrıca, sizeof işlecin işleneni bir sabit listesi türünün adı olduğunda güvenli olmayan bir bağlam kullanmanıza gerek kalmaz.You also don't need to use an unsafe context when the operand of the sizeof operator is the name of an enum type.

Aşağıdaki örnek sizeof işlecinin kullanımını gösterir:The following example demonstrates the usage of the sizeof operator:

using System;

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

İşleci sizeof , yönetilen bellekte ortak dil çalışma zamanı tarafından ayrılacak bayt sayısını döndürür.The sizeof operator returns a number of bytes that would be allocated by the common language runtime in managed memory. Yapı türleri için bu değer, yukarıdaki örnekte gösterildiği gibi herhangi bir doldurma içerir.For struct types, that value includes any padding, as the preceding example demonstrates. sizeof İşlecinin sonucu, yönetilmeyen bellekteki bir türün boyutunu döndüren Marshal.SizeOf yönteminin sonuçlarından farklılık gösterebilir.The result of the sizeof operator might differ from the result of the Marshal.SizeOf method, which returns the size of a type in unmanaged memory.

C# dili belirtimiC# language specification

Daha fazla bilgi için, C# dil belirtiminin sizeof işleci bölümüne bakın.For more information, see The sizeof operator section of the C# language specification.

Ayrıca bkz.See also