22

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

...
public void TestMethod()
{

}
...
4

1 回答 1

28

该框架使用一个被调用的值类型System.Void来表示void与反射一起使用的返回类型关键字。尽管void意味着缺少返回值,但从技术上讲,它仍然是一种类型,并且为了在代码中这样表达,它必须是结构(值类型)或类(引用类型)。

参见MethodInfo.ReturnType示例。

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

于 2012-07-16T05:47:31.837 回答