在一个扩展方法中,我如何有两个过载,一个带有params string [],一个带有字符串[]?

问题描述 投票:0回答:1

因此,我可以在表达式中使用它,这使得易于阅读的代码:

myName.IsOneOf("fred", "jim", "shiela")

但我也想使用这种格式:

string[] names = new string[] {"fred", "jim", "sheila"};

然后我可以这样做:

myName.IsOneOf(names)

但如果我也声明:

public static bool IsOneOf(this string cS, string[] items)
{
    if (items == null) return false;
    if (items.GetLength(0) == 0) return false;
    for (int i = 0; i <= items.GetUpperBound(0); i++)
        if (items[i] == cS) return true;
    return false;
}
我在第二个声明上获取此错误:键入“ StringExtension”已经定义了一个名为“ ISONEOF”的成员,具有相同的参数类型。

在这种情况下,两者都真正有用。我需要第一个来使其向后兼容,但是第二个将与数据驱动的未来更加吻合。

是我可以两者兼而有之吗?
	

上面的评论者比我快一点...

您不需要第二个过载,因为也可以将A

string[]

传递到第一个过载是完全可以的。所以打电话

c# parameter-passing overloading
1个回答
0
投票

工作正好,给出了预期的结果。实际上,这就是编译器将无论如何都会转化一个论点。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.