已经定义了一个使用相同参数类型c#调用的成员

时间:2018-06-07 09:22:49

标签: c#

正如标题所说,我有这个错误already defines a member called with the same parameter types c#

我已经研究了多个相同的问题,但它们都说明了它为什么会发生以及如何处理它(将方法的名称更改为其他一些)但是我不想将方法名称更改为其他的因为它是相同的方法但是使用不同的参数,所以我只想绕过它。

我有两种方法:

public static List<int> Lista(int vrDok)
{
    List<int> list = new List<int>();
    using (FbConnection con = new FbConnection(M.Baza.connectionKomercijalno2018))
    {
        con.Open();
        using (FbCommand cmd = new FbCommand("SELECT BRDOK FROM DOKUMENT WHERE VRDOK = @VrDok ORDER BY DATUM ASC", con))
        {
            cmd.Parameters.AddWithValue("@VrDok", vrDok);

            FbDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                list.Add(Convert.ToInt32(dr[0]));
            }
        }
    }
    return list;
}
public static List<int> Lista(int magacinId)
{
    List<int> list = new List<int>();
    using (FbConnection con = new FbConnection(M.Baza.connectionKomercijalno2018))
    {
        con.Open();
        using (FbCommand cmd = new FbCommand("SELECT BRDOK FROM DOKUMENT WHERE MAGACINID = @MID ORDER BY DATUM ASC", con))
        {
            cmd.Parameters.AddWithValue("@MID", magacinId);

            FbDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                list.Add(Convert.ToInt32(dr[0]));
            }
        }
    }
    return list;
}

因此,你可以看到它们完全相同但参数不同,它会让我失误。

我如何绕过它?

2 个答案:

答案 0 :(得分:5)

由于方法签名相同而导致错误
- Lista(int)
- Lista(int)
参数名称无关紧要。

您可以通过不同方式解决问题:
- 更改一种方法的名称(例如ListaByVrDok,ListaByMagician)&lt; = 推荐
- 在另一个班级中移动一个方法
- 向一个方法添加参数
- 在一个方法中将double改为int

答案 1 :(得分:4)

达维德的任何建议都有效。另一个选择是只有一个方法,它采用ID和参数名称,如下所示:

public static List<int> Lista(int id,string paramName)
{
    List<int> list = new List<int>();
    using (FbConnection con = new FbConnection(M.Baza.connectionKomercijalno2018))
    {
        con.Open();
        using (FbCommand cmd = new FbCommand("SELECT BRDOK FROM DOKUMENT WHERE MAGACINID = @MID ORDER BY DATUM ASC", con))
        {
            cmd.Parameters.AddWithValue(paramName, id);

            FbDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                list.Add(Convert.ToInt32(dr[0]));
            }
        }
    }
    return list;
}

因为两种方法中的所有内容都相同,只是哪个参数名称发生了变化。