1

我正在查看voidC# 中类型的定义。它是一个空结构,表示无值。

但是,这种结构与其他结构之间究竟有什么区别。我的意思是如果你定义一个返回类型为 void 的方法,那么return typeOf(void)你会得到一个错误。

似乎 C# 对这种类型有不同的行为。

有一些关于void真正内容的文档。我的意思是引擎盖下发生了什么。值类型结构怎么能不引用任何内容?

更新:

我认为你们中的一些人没有明白这个问题的重点,这就是为什么您将其标记为重复。我的问题是。虚空是一种结构。好的 ?.. 结构是值类型。在可能的最低阶段会发生什么?内存中的 void 代表什么?这个结构和其他结构有什么区别,如果你在 void 上按 F12,你只会看到一个空结构?c# 在哪里产生了这种差异?

4

5 回答 5

12

关键是具有void返回类型的方法不返回任何内容。它不返回 type 的值void;它根本没有返回值。

您不能声明该类型的方法;您不能将参数声明为void... 它表示根本没有任何值。该类型System.Void实际上只是为了促进反射而存在,其中MethodInfo.ReturnType需要指示方法不返回任何内容。

void 如果它是一个真正的类型,有很多方法会很有用,就像Unit在 F# 中一样。例如,我们可以使用Task<T>而不是Task<T>and Task... 实际上TaskTask<void>,但这不是有效的...

于 2013-07-01T12:10:36.607 回答
3

它实际上据可查 它是类型论中的一个基本概念,与单元类型有关。

事实上,您可以使用typeof(void),尽管您可以用它做的事情并不多。之所以

public void foo() { return typeof(void); } 

不起作用是因为结果typeof(void)不是类型的void实例,而是类型的实例Type。写这个的正确方法很简单

public void foo() { return; } 
于 2013-07-01T12:15:41.383 回答
3

有些语言有两种不同形式的子程序。程序和功能。不同之处在于过程是一系列操作。函数是带有 return 语句的操作。

在 C# 中,一切都是“函数”,因此 void 关键字只是表明它实际上不是函数,因为它没有返回语句。

于 2013-07-01T12:19:16.030 回答
1

Void这个词的意思是没有。如果一个值是无效的,则意味着它没有值。在方法或函数中,这意味着它没有返回类型,因此您的函数不必返回任何内容才能运行

public static void TestRefType()
{
SampleRefType rt = new SampleRefType();
rt.value = 44;
ModifyObject(rt);
System.Console.WriteLine(rt.value);
}
于 2013-07-01T12:13:05.593 回答
1

当用作方法的返回类型时,void 指定该方法不返回值。

http://msdn.microsoft.com/en-us/library/yah0tteb(v=vs.110).aspx

于 2013-07-01T12:09:50.017 回答