sizeof (C# リファレンス)
アンマネージ型のサイズ (バイト単位) を取得します。アンマネージ型には、後の表に示す組み込み型と、次の型とが含まれます。
列挙型
ポインター型
参照型のフィールドやプロパティを含まないユーザー定義の構造体
int のサイズを取得する方法を次の例に示します。
// Constant value 4:
int intSize = sizeof(int);
解説
C# バージョン 2.0 以降、組み込み型に sizeof を適用する場合に、unsafe モードを使用する必要はありません。
sizeof 演算子はオーバーロードできません。sizeof 演算子により返される値の型は int です。次の表に、特定の組み込み型をオペランドとする sizeof 式と、代用される定数値を示します。
式 |
定数値 |
---|---|
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 (Unicode) |
sizeof(float) |
4 |
sizeof(double) |
8 |
sizeof(decimal) |
16 |
sizeof(bool) |
1 |
struct などその他のすべての型については、sizeof 演算子はアンセーフ コード ブロックでのみ使用できます。Marshal.SizeOf メソッドは使用できますが、このメソッドの戻り値が sizeof の戻り値と等しいとは限りません。Marshal.SizeOf は値のマーシャリング後にサイズを返します。一方、sizeof は、共通言語ランタイムによる割り当ての後に埋め込みを含めたサイズを返します。
使用例
class MainClass
{
// unsafe not required for primitive types
static void Main()
{
Console.WriteLine("The size of short is {0}.", sizeof(short));
Console.WriteLine("The size of int is {0}.", sizeof(int));
Console.WriteLine("The size of long is {0}.", sizeof(long));
}
}
/*
Output:
The size of short is 2.
The size of int is 4.
The size of long is 8.
*/
C# 言語仕様
詳細については、「C# 言語仕様」を参照してください。言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。
参照
関連項目
unsafe コードとポインター (C# プログラミング ガイド)