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.