|
|
連載:[完全版]究極のC#プログラミング
Chapter6 ラムダ式(前編)
川俣 晶
2009/10/19 |
|
|
6.3 ラムダ式は上位スコープにアクセスできる
ラムダ式が名前のあるメソッドと決定的に違うのは、実は名前がないことではなく、上位スコープにアクセスできることである(リスト6.4参照)。
using System;
delegate void MyAction();
class Program
{
static void Main(string[] args)
{
string message = "Hello! World!";
MyAction action = ()=>
{
Console.WriteLine(message); // messageは上位スコープの変数
};
action(); // 出力:Hello! World!
}
}
|
|
リスト6.4 文字列を引数で渡さなかった場合 |
この場合、変数messageはMainメソッドに属する変数であり、ラムダ式には属していない。しかし、ラムダ式は上位スコープにアクセスできるので、変数messageの内容を出力することができる。
この特徴は非常に重要である。なぜなら、必要とされるあらゆる情報を引数経由で渡さずに済むので、引数の肥大化が防げるのである。また、引数が最小限に絞られることで、少数のデリゲート型を使い回すだけで済んでしまうことも多くなる。
まさに、この特徴ゆえにラムダ式は気楽に使える“ご飯”のような機能になっているわけである。
Insider.NET 記事ランキング
本日
月間