void子程序返回什么?

时间:2015-02-13 09:49:53

标签: c# .net subroutine

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

“void子程序返回什么?”

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

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

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

2 个答案:

答案 0 :(得分:6)

System.Void不是没有,它是struct因此是值类型。

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

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

这不编译(" System.Void不能在C#中使用 - 使用typeof(void)来获取void类型对象")。相关:Why not System.Void?


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

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

  

" Void结构用于System.Reflection命名空间,但是   在典型应用中很少有用。虚空结构没有   除了所有类型的成员都继承自Object类。"

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

另外值得一读:Why does void in C mean not void?

答案 1 :(得分:2)

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