Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
sizeof işleci, belirli bir türdeki değişkenin kapladığı bayt sayısını döndürür. Güvenli kodda, işlecin bağımsız değişkeni, boyutu platforma sizeof bağımlı olmayan yerleşik bir yönetilmeyen türün adı veya bir numaralandırma türü olmalıdır.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
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 |
Önceki tablodaki türlerin boyutu bir derleme zamanı sabitidir.
Bir sabit listesi türü için, işlecin sonucu sizeof enum'un temel integral türünün boyutudur. Sonuç, derleme zamanında hesaplanır.
Güvenli olmayan kodda, tür parametrelerinden oluşan türler de dahil olmak üzere türü olmayansizeof herhangi bir kodda kullanabilirsinizvoid.
Note
C# 15'te bulunan bellek güvenliği önizleme özelliği, bağlam sizeof dışındaki yönetilmeyen türlerde kullanmanıza unsafe olanak tanır.
- Başvurunun veya işaretçi türünün boyutu başvurunun veya işaretçinin boyutudur; başvurabileceği nesnenin boyutu değildir.
- Yönetilmeyen veya yönetilmeyen bir değer türünün boyutu, böyle bir değerin boyutudur.
- Numaralandırma türünün boyutu, temel alınan tam sayı türünün boyutudur. Bu boyut bir derleme zamanı sabitidir. Başvurulan derlemede tanımlanan bir numaralandırmanın temel türü daha sonra değişirse, yeni boyutu gözlemlemek için bu sabit listesi için uygulanan
sizeofkodun yeniden derlenmiş olması gerekir. - Bir
ref structtürün boyutu değerin boyutudur. Herrefalanın boyutu bir başvurunun veya işaretçinin boyutudur, başvurduğu değerin boyutu değildir.
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
Console.WriteLine(sizeof(nint)); // output: 8 on 64-bit, 4 on 32-bit
Console.WriteLine(sizeof(nuint)); // output: 8 on 64-bit, 4 on 32-bit
Console.WriteLine(sizeof(Span<int>)); // output: 16 on 64-bit, 12 on 32-bit
}
}
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 Marshal.SizeOf türün boyutunu döndüren yönteminin sonucundan farklı olabilir.
Ö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 sizeof işleç bölümüne bakın.