扩展方法中的 C# out 参数

C# out parameter in extension method

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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;
}


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

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

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

它应该都可以工作


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

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

您可能对另一个问题感兴趣,关于做这种事情的可读性。扩展方法中的第一个 ("this") 参数无法使用 ref 和 out?