例として、次の C# 関数を取り上げます。
static void Main(string[] args)
{
var r = new Random();
{
var i = r.Next(); ;
Console.WriteLine("i = {0}", i);
}
var action = new Action(delegate()
{
var i = r.Next();
Console.WriteLine("Delegate: i = {0}", i);
});
action();
}
次のブロックは、この SO Question で説明されているように、ソース コードに変数スコープの追加レイヤーを適用するための C# シンタックス シュガーとしてのみ存在します。
{
var i = r.Next(); ;
Console.WriteLine("i = {0}", i);
}
生成されたアセンブリを ILSpy で逆コンパイルし、これを取得することでこれを証明しました。
private static void Main(string[] args)
{
Random r = new Random();
int i = r.Next();
Console.WriteLine("i = {0}", i);
Action action = delegate
{
int j = r.Next();
Console.WriteLine("Delegate: i = {0}", j);
}
;
action();
}
では、この C# コンストラクトには名前がありますか? もしそうなら、それは何ですか?