C#方法重载--2个参数相似的方法

问题描述 投票:0回答:1

我有两个方法,它们的输入参数类型相似,但参数本身是不同的,用于在方法中建立一个SQL语句。

C#不喜欢这样--"Type Database已经定义了一个名为'DatabaseSearch'的成员,参数类型相同"。

作为一个新手,这在我听来像是我把类或方法的结构设计错了?

也许我应该在方法之外构建SQL语句,然后把它和它的参数传递进来?

 // Surname ONLY
    public void DatabaseSearch(DataGrid DataGrid, string surname)
    {

        string database_file_path = @"Data Source=.\MemberDB.db";

        string sqlCmd = "Select * FROM Members WHERE Surname = @surname";

        using (var con = new SQLiteConnection(database_file_path))
        {
            using (var cmd = new SQLiteCommand(con))
            {
                con.Open();

                cmd.Parameters.AddWithValue("@surname", surname);

                cmd.CommandText = sqlCmd;

                var dataAdapter = new SQLiteDataAdapter(cmd);
                var dt = new DataTable("Members");
                dataAdapter.Fill(dt);
                DataGrid.ItemsSource = dt.DefaultView;
                dataAdapter.Update(dt);
            }
        }

    }


 // Firstname ONLY
    public void DatabaseSearch(DataGrid DataGrid, string firstname)
    {

        string database_file_path = @"Data Source=.\MemberDB.db";

        string sqlCmd = "Select * FROM Members WHERE FirstName = @firstname";

        using (var con = new SQLiteConnection(database_file_path))
        {
            using (var cmd = new SQLiteCommand(con))
            {
                con.Open();

                cmd.Parameters.AddWithValue("@firstname", firstname);

                cmd.CommandText = sqlCmd;

                var dataAdapter = new SQLiteDataAdapter(cmd);
                var dt = new DataTable("Members");
                dataAdapter.Fill(dt);
                DataGrid.ItemsSource = dt.DefaultView;
                dataAdapter.Update(dt);
            }
        }

    }

总结一下。

如何拥有两个具有相同类型参数的重载方法?

 public void myMethod( int one, string one){
 ....some stuff done...
}

 public void myMethod( int two, string two){
 ....different stuff done...
}
c# methods overloading
1个回答
1
投票

你可以改变方法名或者改变参数的顺序。第一种方法比较好。

 public void DatabaseSearchByFirstName(int one, string one){
 // ...some stuff done...
}

 public void DatabaseSearchBySurName(int two, string two){
 // ...different stuff done...
}

© www.soinside.com 2019 - 2024. All rights reserved.