【发布时间】:2011-06-20 08:56:57
【问题描述】:
可能重复:
What is System.Void?
我没有实际理由知道这个答案,但我还是很好奇...
在 C# 中,尝试使用 System.Void 会产生编译错误:
错误 CS0673: System.Void 不能在 C# 中使用 -- 使用 typeof(void) 来获取 void 类型对象
据我了解,void 只是System.Void 的别名。所以,我不明白为什么不能直接使用“System.Void”,例如“System.String”的“string”。我很想阅读对此的解释!
顺便说一句,System.Void 可以成功地与 Mono 编译器一起使用,而不是 Microsoft 的编译器,它看起来等同于使用 void 关键字。因此,这一定是编译器强制执行的限制,而不是 CLR 限制,对吧?
【问题讨论】:
-
我从 Vb.Net 得到相同的异常:'System.Void' 只能用于 GetType 表达式。
-
另见stackoverflow.com/questions/5450748/what-is-system-void - 它解释了这是编译器强制执行的规则。
-
其他问题只回答是什么而不是为什么。
-
我不确定这是不是重复的。另一个问题涉及行为是“什么”。这个问题涉及“为什么”行为是这样的。