【问题标题】:C# out parameter in extension method扩展方法中的 C# out 参数
【发布时间】:2015-11-16 18:49:17
【问题描述】:

在扩展方法中,我收到一个错误,即我的“out”参数在当前上下文中不存在。我认为这意味着扩展方法不能有“out”参数,但这没有在文档中指定。如果有人能澄清一下,我将不胜感激!

public static int customMax(this int[] data, out index)
{
    int max = data[0];
    index = 0;

    for (int i = 1; i < data.Length; i++) {
        if (data[i] > max) {
            max = data[i];
        }
    }

    return max;
}

【问题讨论】:

  • 你忘记为index 参数添加类型(我认为是int)
  • 你也忘了设置通过index返回的实际值。

标签: c# extension-methods out


【解决方案1】:

您错过了在 out 参数上指定类型。 它应该是:

    public static int customMax(this int[] data, out int index)

关于做这种事情的可读性,您可能会对另一个问题感兴趣。 Impossible to use ref and out for first ("this") parameter in Extension methods?

【讨论】:

    【解决方案2】:

    扩展方法可以有 out 参数。您需要指定 out 参数的类型。所以改代码

    public static int customMax(this int[] data, out index)
    

    public static int customMax(this int[] data, out int index)
    

    它应该都可以工作

    【讨论】:

    • 谢谢 - 我注意到了这一点并打算删除问题,但你太快了!
    猜你喜欢
    • 2014-03-25
    • 2011-02-06
    • 2016-02-13
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    相关资源
    最近更新 更多