我在查看C#中void
类型的定义。它是一个空结构,代表无值。
但是,这种结构与其他结构之间的区别究竟是什么。我的意思是如果你定义一个返回类型为void的方法然后你return typeOf(void)
你会得到一个错误。
C#似乎与此类型有不同的行为。
有一些关于void
真实存在的文档。我的意思是幕后发生了什么。值类型结构如何引用什么?
更新
我认为你们中的一些人没有明白这个问题,这就是为什么你把它标记为重复的原因。我的问题是。虚空是一种结构。好 ? ..结构是价值类型。 在可能的最低阶段会发生什么?什么空虚代表在记忆中?这个结构和其他结构之间有什么区别,如果你按空格键F12,你只看到一个空结构?哪个c#有所不同?
答案 0 :(得分:11)
关键是具有void
返回类型的方法不会返回任何内容。它不返回类型void
的值;它完全没有回报价值。
您无法声明该类型的方法;你不能将参数声明为void
...它表示根本没有任何值。类型System.Void
实际上只是为了促进反射而存在,MethodInfo.ReturnType
之类的东西需要指示方法不返回任何内容。
如果void
是真实类型,有很多方法可以使用,就像Unit
在F#中一样。例如,我们可以只拥有Task<T>
而不是Task<T>
和Task
...有效Task
是Task<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语句。