sizeof işleci (C# Başvurusu)
sizeofİşleci, verilen türdeki bir değişken tarafından bulunan bayt sayısını döndürür. İşlecin bağımsız değişkeni, yönetilmeyen bir sizeof türün veya yönetilmeyen tür olarak Kısıtlanmış bir tür parametresinin adı olmalıdır.
sizeofOperatör güvenli olmayan bir bağlam gerektiriyor. 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) |
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 |
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.
Aşağıdaki örnek işlecinin kullanımını gösterir sizeof :
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)}");
}
}
sizeofİşleci, yönetilen bellekte ortak dil çalışma zamanı tarafından ayrılacak bayt sayısını döndürür. Yapı türleri için bu değer, yukarıdaki örnekte gösterildiği gibi herhangi bir doldurma içerir. İşlecinin sonucu, sizeof Marshal.SizeOf yönetilmeyen bellekteki bir türün boyutunu döndüren yönteminin sonuçlarından farklılık gösterebilir.
C# dili belirtimi
Daha fazla bilgi için C# dil belirtiminin sizeof işleci bölümüne bakın.