如果你声明了一个结构:
struct EmptyResult
{
}
Run Code Online (Sandbox Code Playgroud)
EmptyResult
在实例中创建类型变量的结果是什么?
public Foo()
{
EmptyResult result;
}
Run Code Online (Sandbox Code Playgroud)
您是否期望在堆栈上进行分配,还是实际上是无操作?
C#编译器强制空结构的大小为1个字节.如果你看一下反编译器中的struct,你可以看到这个:
[StructLayout(LayoutKind.Sequential, Size=1)]
private struct EmptyResult
{
}
Run Code Online (Sandbox Code Playgroud)
因此,类或堆栈中该结构的任何实例将占用1个字节,与System.Byte
或的实例完全相同System.SByte