簡體   English   中英

C# 方法重載 - 2 種具有相似參數的方法

[英]C# Method Overloading - 2 methods with similar parameters

我有兩種輸入參數類型相似的方法,但參數本身不同,用於在方法內構建 SQL 語句。

C# 不喜歡這樣 - “類型數據庫已經定義了一個名為 'DatabaseSearch' 的成員,具有相同的參數類型。”

作為一個新手,這聽起來像是我在構建 class 或方法錯誤?

我是否應該在方法外部構建 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...
}

您可以更改方法名稱或更改參數的順序。 第一種方法更好。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM