C#でラムダ式を書く方法 #04_ラムダなしで実装_共通関数

当サイトではアフィリエイト広告を利用しています。

C#でラムダ式を書く方法1

前回はラムダ式とは関係ない,普通の文法で,string配列から,3文字以上の文字列を取得するコードを書きました。ここから徐々にラムダ式を目指していきますが,今回は,共通関数化を行います。3文字以上の文字列を取得するロジックの部分をメソッド化するということです。これがラムダ式とどういう関係があるのかと感じる方もいるでしょうが,1つずつ整理して考えていく必要があるので,信じてついてきてください。

メソッドの作成

それでは,前回3文字以上の文字列を取得したforeachのロジック部分をメソッド化します。次のようにメソッドを追記してください。

//3文字以上の文字列を返却する部分だけを共通関数化
private string[] GetValue1(string[] values)
{
    var result = new List();
    foreach (var val in values)
    {
        if (val.Length >= 3)
        {
            result.Add(val);
        }
    }

    return result.ToArray();
}

前回記述した,resultの生成部分とforeachの部分を抜き出して,resultを返却しています。resultはListで戻り値はstring配列にしているので,result.ToArray()としています。

メソッドの呼び出し部分を追加

先ほど記述したbutton1_Clickの最後にGetValue1メソッドの呼び出しと,その結果を出力するコードを記述します。

private void button1_Click(object sender, EventArgs e)
{
    //ストリングの配列に5つの文字を入れる
    //文字数を1~5にする。Aは1文字,Bは2文字という感じで
    //意図的に文字数も変えている
    var values = new string[] { "A", "BB", "CCC", "DDDD", "EEEEE" };

    //結果を入れるリスト
    var result = new List();

    //3文字以上の文字列をresultに格納する
    foreach (var val in values)
    {
        if (val.Length >= 3)
        {
            result.Add(val);
        }
    }

    //結果を出力
    //Joinは第1引数を区切り文字にしてリストを文字結合して出力する
    Console.WriteLine(string.Join(",", result));


    //共通関数化した場合
    var result2 = GetValue1(values); //ADD
    Console.WriteLine(string.Join(",", result2)); //ADD
}

これで,前回の結果を出力後,今回の共通関数化の結果も出力されることになります。

実行

この状態で実行し,button1を押下して,出力ウィンドウの実行結果を確認します。

2行出力され,同じ結果が出力されることが確認できると思います。今回は前回作成したロジックをメソッド化しただけなので,同じ結果になって当然ですね。ここまでは当然の結果なのですが,今後のラムダ式のもとになる部分を段階的に解説しているので,もう少し辛抱してついてきてください。