void子程序返回什么?

Sim*_*all 0 .net c# subroutine

我只是在对复数视力进行评估,并给出了以下问题.

"void子程序返回什么?"

我的印象是void子程序没有返回任何内容,但这不是提供的答案之一(多项选择题).

.Net是在后台返回值类型还是这个问题不正确?

我给出的选择是:整数布尔字符串日期时间

Tim*_*ter 6

System.Void并非一无是处,因此它是struct一种价值类型.

但是,Sub(VB.NET)或"返回" void(C#)的方法并不真正返回值.所以你不能写这样的东西:

System.Void nothing = Foo(); // Foo is a void-method 
Run Code Online (Sandbox Code Playgroud)

这不编译(" System.Void不能从C#中使用 - 使用typeof(void)来获取void类型对象").相关:为什么不System.Void?


正如Jeroen和其他人所提到的,实际上一个void方法确实没有返回任何东西,所以正确答案是:"它什么都不返回".

MSDN提到它只在反射中有用:

"Void结构在System.Reflection命名空间中使用,但在典型的应用程序中很少有用.Void结构除了从Object类继承的所有类型之外没有其他成员."

如果你查看void-keyword 上的工具提示,你会看到它映射到System.Void.但同样,这并不意味着它是从方法返回的.它只是一个不存在的返回值的占位符.我想这void也是由于历史原因而存在,因为C#是基于C.

另外值得一读:为什么C中的void意味着无效?