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 |
对于所有其他类型(包括结构),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# 语言规范是 C# 语法和用法的权威资料。