为什么Void是一个结构?

时间:2012-07-16 05:45:30

标签: c# .net

我意识到在Microsoft .NET Framework中void返回类型是一种结构。为什么呢?

...
public void TestMethod()
{

}
...

1 个答案:

答案 0 :(得分:28)

框架使用a value type called System.Void来表示用于反射的void返回类型关键字。虽然void表示缺少返回值,但它在技术上仍然是一种类型,并且为了在代码中表达它,它必须是结构(值类型)或类(参考类型)。

有关示例,请参阅MethodInfo.ReturnType

至于为什么框架设计者选择使System.Void成为一个结构而不是一个类是任何人的猜测,但它必须首先由一个类型表示。我同意这些评论,以避免通常与参考查找相关的不必要的开销,以及其他优化。