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

Ale*_*tic 3 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;
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到它们完全相同但具有不同的参数,它会让我失误.

我怎么能绕过它呢?

Dav*_*ato 5

它给出错误,因为方法签名是相同的
- Lista(int)
- Lista(int)
参数名称无关紧要.

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

  • "在一种方法中改变int [to] double"并不是一个好方法.这可能是一个坏主意. (3认同)
  • 值得注意的是,在您的第一部分中,"返回列表"不相关.你不能有一个只有返回类型不同的方法,所以重要的是`Lista(int)`. (2认同)
  • @Chris IIRC*在IL级别*你可以,但在C#级别 - 确实你不能创作或使用这样的方法. (2认同)

小智 5

Davide 的任何建议都会起作用。另一种选择是只使用一种方法来获取 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;
}
Run Code Online (Sandbox Code Playgroud)

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