扩展方法中的C#out参数

时间:2015-08-23 06:20:35

标签: c# extension-methods out

在扩展方法中,我收到一条错误,指出我的'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;
}

2 个答案:

答案 0 :(得分:5)

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

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

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

它应该全部工作

答案 1 :(得分:0)

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

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

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