为什么部分方法支持ref但不支持out参数

时间:2014-04-25 11:20:51

标签: c# partial-methods

我正在阅读partial methods,因为它们在C#-6 / Visual Studio 2013更新2中与Windows Universal Projects结合使用会变得更加重要。在阅读文档时,我读到了对部分方法签名的这种奇怪的限制:

  

部分方法可以有参考但不能输出参数。

我不明白这种限制的原因。由于部分方法基本上是在不同文件中签名和实现的常规方法,因此有哪些技术原因不支持参数?或者此限制的任何其他原因。特别是因为它们支持参数very similar

2 个答案:

答案 0 :(得分:8)

如果声明了部分方法但未实现,则不会调用它。

这意味着不会分配任何out参数,这是不允许的。

这不是ref参数的问题,因为它们必须在传递给方法之前进行分配,因此即使未调用该方法,它们也会被明确分配。

答案 1 :(得分:0)

如果你看一下在实现部分方法时需要注意的细节,这是有道理的:

部分方法实现是可选的。

永远不会为out变量赋值,而始终为ref变量赋值。考虑一下,在没有实现部分方法的情况下,我们将有一个未分配的变量。 ref变量不会出现问题,因为它有一些赋值。

由于这个原因,不支持out变量,因为out变量意味着返回了值。