因此,我可以在表达式中使用它,这使得易于阅读的代码:
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[]
传递到第一个过载是完全可以的。所以打电话
工作正好,给出了预期的结果。实际上,这就是编译器将无论如何都会转化一个论点。