【问题标题】:Why do partial methods support ref but not out parameters [duplicate]为什么部分方法支持 ref 但不支持 out 参数 [重复]
【发布时间】:2014-04-25 11:20:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# partial-methods


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不知道所有对部分方法的调用都被删除了。这实际上是相当可怕的。感谢您的信息!
    【解决方案2】:

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

    部分方法的实现是可选的。

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 2011-08-31
      • 2012-03-11
      • 1970-01-01
      • 2017-01-11
      • 2015-03-22
      • 2014-03-13
      • 1970-01-01
      相关资源
      最近更新 更多