6

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

部分方法可以有 ref 但不能有 out 参数。

我不明白这个限制的原因。既然partial方法基本上是一个普通的方法,签名和实现在不同的文件中,那有什么技术原因不支持out参数呢?或任何其他导致此限制的原因。特别是因为它们确实支持非常相似的 ref 参数。

4

2 回答 2

8

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

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

这不是ref参数的问题,因为它们必须在传递给方法之前分配,所以即使没有调用方法,它们也肯定是分配的。

于 2014-04-25T11:25:32.217 回答
0

有道理,如果您查看实现部分方法时要注意的细节:

部分方法实现是可选的。

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

因此,不支持 out 变量,因为 out 变量意味着正在返回值。

于 2014-04-25T11:45:42.923 回答