首页 > 解决方案 > C# 方法重载 - 2 个具有相似参数的方法

问题描述

我有两种输入参数类型相似的方法,但参数本身不同,用于在方法内构建 SQL 语句。

C# 不喜欢这样 - “类型数据库已经定义了一个名为 '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#methodsoverloading

解决方案


您可以更改方法名称或更改参数的顺序。第一种方法更好。

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

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


推荐阅读