void子程序返回什么?

我只是在对复星进行评估,并给出了以下问题。

“void子程序返回什么?”

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

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

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

System.Void不是什么都没有 ,它是一个struct因此是一个值类型。

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

 System.Void nothing = Foo(); // Foo is a void-method 

这不编译(“ System.Void不能用于C# – 使用typeof(void)来获取void类型对象”)。 相关: 为什么不System.Void?


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

MSDN提到它只在reflection中有用:

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

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

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

一种方法,其返回类型为void ,它不返回任何内容。 您可以在方法体内执行任何您想要的语句。 此外,这些语句可能会影响您想要的任何内容,但在一天结束时,您的方法将不会返回任何内容。