在C#中新建一个空结构有什么作用?

Pau*_*ner 11 c# clr struct

如果你声明了一个结构:

struct EmptyResult
{
}
Run Code Online (Sandbox Code Playgroud)

EmptyResult在实例中创建类型变量的结果是什么?

public Foo()
{
    EmptyResult result;
}
Run Code Online (Sandbox Code Playgroud)

您是否期望在堆栈上进行分配,还是实际上是无操作?

the*_*oop 9

C#编译器强制空结构的大小为1个字节.如果你看一下反编译器中的struct,你可以看到这个:

[StructLayout(LayoutKind.Sequential, Size=1)]
private struct EmptyResult
{
}
Run Code Online (Sandbox Code Playgroud)

因此,类或堆栈中该结构的任何实例将占用1个字节,与System.Byte或的实例完全相同System.SByte