我有这两个功能
public static string Function1 (string id, params string[])
{
return Function1(id, null, null, params)
}
public static string Function1 (string id, string id2, Object a, params string[])
{
string id = id,
if (IsValidId(id))
{
start = new ProcessStartInfo();
start.Arguments = params;
if (string.IsNullOrEmpty(id2)==false)
{
start.RedirectStandardOutput = true;
}
}
}
我想在执行以下调用时使用第二个重载
MyStaticClaass.Function1(
input1,
input2,
null, // (This one represents the Object)
input3,
input4,
input5);
有没有办法可以强制它转到方法的第二个定义?
我遇到的编译错误是:这个调用在以下方法或属性之间是不明确的:(然后是上面的两个方法)
PS:我没有选择这两个功能。我不能改变他们的签名或他们的名字。
答案 0 :(得分:6)
您可以使用Named arguments
重载特定功能,例如
Program.Function1(
id: input1,
id2: input2,
o:null,
array: new string[] {input3,
input4,
input5});
它会点击功能
public static string Function1 (string id, string id2, Object o, params string[] array)
{
}
有关详细信息,请查看此Named Arguments
答案 1 :(得分:1)
也可以这样:
var result = Rootobject.Function1(
"",
"",
null, // (This one represents the Object)
new string[] { "", "", ""});
然而,既然你已经知道这是一个脆弱的设计,或者你不会在这里询问它,也许你应该重新考虑你的重载。当然,我们让它工作,但它不是一个好的设计。