如何到处走走?我不希望有不同名称的函数。
public class DataRowSafe
{
public String Get(String Column)
{
return String.Empty;
}
public int Get(String Column)
{
return 0;
}
}
DataRowSafe r=new DataRowSafe();
String res=r.Get("Column1");
int res2=r.Get("Column2");//<--- Ambiguous call
答案 0 :(得分:5)
方法的重载需要使用类似命名的方法来使用不同的签名。回报值微不足道!在这里查看this教程。
答案 1 :(得分:2)
你不能,没有办法,唯一的办法就是拥有不同的签名。
答案 2 :(得分:2)
你可以参考这样的参数
public class DataRowSafe
{
public void Get(String Column, ref string myParam)
{
myParam = String.Empty;
}
public void Get(String Column,ref int myParam)
{
myParam = 0;
}
}
int i = 0;
string st = "";
new DataRowSafe().Get("name", ref i);
new DataRowSafe().Get("name", ref st);
答案 3 :(得分:1)
你应该收到像
这样的错误'DataRowSafe'已经定义了一个名为'Get'的成员 参数类型
函数的返回类型并不重要,但在这种情况下,编译器与可用于调用的两种方法混淆,并且不确定哪些方法可能被拾取,也许您可以使用泛型来克服此问题
像
这样的样本public static T GetValue<T>(string column)
{
string returnvalue="";
//process the data ...
return (T)Convert.ChangeType(returnvalue, typeof(T), CultureInfo.InvariantCulture);
}
答案 4 :(得分:0)
这是不可能的,因为重载仅适用于不同的签名。如果签名相同,则c#编译器将返回错误。