类中的模糊调用函数

时间:2013-04-02 09:24:10

标签: c# class function call ambiguous

如何到处走走?我不希望有不同名称的函数。

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

5 个答案:

答案 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#编译器将返回错误。