C#中'void'的真正含义是什么?

时间:2013-07-01 12:08:26

标签: c# null structure void return-type

我在查看C#中void类型的定义。它是一个空结构,代表无值。

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

C#似乎与此类型有不同的行为。

有一些关于void真实存在的文档。我的意思是幕后发生了什么。值类型结构如何引用什么?

更新

我认为你们中的一些人没有明白这个问题,这就是为什么你把它标记为重复的原因。我的问题是。虚空是一种结构。好 ? ..结构是价值类型。 在可能的最低阶段会发生什么?什么空虚代表在记忆中?这个结构和其他结构之间有什么区别,如果你按空格键F12,你只看到一个空结构?哪个c#有所不同?

5 个答案:

答案 0 :(得分:11)

关键是具有void返回类型的方法不会返回任何内容。它不返回类型void的值;它完全没有回报价值。

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

如果void 是真实类型,有很多方法可以使用,就像Unit在F#中一样。例如,我们可以拥有Task<T>而不是Task<T>Task ...有效TaskTask<void>,但是那是无效的......

答案 1 :(得分:3)

实际上是fairly well documented。这是type theory中与unit type相关的基本概念。

事实上你可以使用typeof(void),虽然你可以用它做的不多。

之所以如此
public void foo() { return typeof(void); } 

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

public void foo() { return; } 

答案 2 :(得分:1)

  

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

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

答案 3 :(得分:1)

Void这个词的意思是没有。如果Value为void,则表示它没有Value。在方法或函数中,它意味着它没有返回类型,因此你的函数doesent必须返回任何运行

public static void TestRefType()
{
SampleRefType rt = new SampleRefType();
rt.value = 44;
ModifyObject(rt);
System.Console.WriteLine(rt.value);
}

答案 4 :(得分:1)

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

在C#中,一切都是“函数”,所以void关键字只显示,它实际上不是一个函数,因为它没有return语句。