匿名メソッドの使い道

こんな処理があるとする。

static void Main() {
    var shared = "なんか";
    var array = new [] { "100", "200" };

    foreach(var s in array) {
        // shared と s を使って処理する。
    }
}

このループ部分の処理が少しばかり複雑になったとして、この部分をメソッドとして切り離すとしよう。

普通にやるとこうなる。

static string shared = "なんか";

static void Main() {
    var array = new [] { "100", "200" };

    foreach(var s in array) DoSomething(s);
}
static void DoSomething(string s) {
    // shared と s を使ってなんかする。
}

もしくは、このメソッドにshared変数を引数として渡すか。

でも、こうしてもいいんじゃね?

static void Main() {
    var shared = "なんか";
    var array = new [] { "100", "200" };

    Action<string> doSomething = s => {
        // shared と s を使ってなんかする。
    };
    foreach(var s in array) doSomething(s);
}

メソッドを定義するのと同じような感覚で普通に使う。C#でもそろそろこういう使い方を当たり前のようにしてもいいよね?