オプション引数(デフォルト引数)の使い所

C#, IT

オプション引数(デフォルト引数)とは

C#で引数にデフォルトの値を設定できる。
デフォルトの値を設定できるため、
呼び出し時にその引数に値を渡さなくても実行できる。
オーバーロードでも同様なことができるが、
オプション引数の方が記述量が少ないので、
僕はオプション引数を使うことが多いです。


オプション引数(デフォルト引数)の使い方

引数にstringのSQL文を持つメソッドがあるとします。

public void GetHogeCode(string SQL)
{
    //引数のSQLを実行する処理
}

SQLの検索条件にパラメータがある場合、
引数にパラメータも渡したくなります。

public void GetHogeCode(string SQL)
{
    //引数のSQLを実行する処理
}
public void GetHogeCode(string SQL, List<OracleParameter> parameters)
{
    //引数のSQLにパラメータをセットして実行する処理
}

オーバーロードで書くなら上記のような感じになります。


public void GetHogeCode(string SQL, List<OracleParameter> parameters = null)
{
    //引数のSQLにパラメータをセットして実行する処理
}

オプション引数で書く場合、上記のようになります。
デフォルトの設定値(null)をparametersに設定しています。

//ほげID=パラメータのほげ名を取得するSQL
string sql = "SELECT HOGE_NAME FROM HOGE_TABLE WHERE HOGE_ID = :hoge";
//パラメータリスト
List<OracleParameter> parameters = new List<OracleParameter>();
//パラメータリストにOracleParameterを追加
parameters.Add(new OracleParameter(":hoge", "Sample"));
//オプション引数を設定したメソッドにsql文とパラメータリスト渡して実行
GetHogeCode(sql,parameters);

SQL文とパラメータリストを渡してメソッドを実行しています。
デフォルトの値nullは渡されたparametersで上書きされます。

//ほげ名を取得するSQL
string sql2 = "SELECT HOGE_NAME FROM HOGE_TABLE";
//オプション引数を設定したメソッドにsql文を渡して実行
GetHogeCode(sql2);

先程とは異なりSQL文だけ渡してメソッドを実行しています。
オプション引数parametersにはデフォルト値nullがセットされます。

メソッドの使用箇所によって必要な引数が増減する場合にとても有用です。


まとめ

記述量が減るのでオーバーロードよりオプション引数の方が好きです。

C#, IT

Posted by raishin