代码之家  ›  专栏  ›  技术社区  ›  Aleksa Ristic

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

c#
  •  3
  • Aleksa Ristic  · 技术社区  · 8 年前

    正如title所说我有这个错误 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 回复  |  直到 8 年前
        1
  •  4
  •   Hagashen Naidu    8 年前

    戴维德的任何建议都会奏效的。另一个选项是只使用一个方法,该方法接受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;
    }
    

    因为这两个方法中的所有内容都是相同的,只是哪个参数名会更改。

        2
  •  5
  •   Davide Pizzolato Andy Edinborough    8 年前

    因为方法签名是相同的
    - Lista(int)
    - Lista(int)
    参数名无关紧要。

    您可以通过不同的方式解决:
    -更改一个方法的名称(例如listabyvrdok、listabymagician)<。= 推荐
    -在另一个类中移动一个方法
    -向一个方法添加参数
    -将int改为double-in-one方法