私は彼らが言う閉鎖についてこの記事を読んでいます:
- 「配管はすべて自動」
- コンパイラは「ラッパークラスを作成」し、「変数の寿命を延ばします」
- 「安心してローカル変数を使える」
- .NET コンパイラが配管などを処理します。
だから私は彼らのコードに基づいて例を作った.
または、この「ローカル変数のラッピング」によって解決された、クロージャーを特別/興味深い/便利にする問題は何ですか?
using System;
namespace TestingLambda2872
{
class Program
{
static void Main(string[] args)
{
Func<int, int> AddToIt = AddToItClosure();
Console.WriteLine("the result is {0}", AddToIt(3)); //returns 30
Console.ReadLine();
}
public static Func<int, int> AddToItClosure()
{
int a = 27;
Func<int, int> func = s => s + a;
return func;
}
}
}
答え
したがって、これに対する答えは、Marc が指摘したクロージャに関する Jon Skeet の記事を読むことです。この記事は、C# のラムダ式に至るまでの進化を示すだけでなく、Java でクロージャがどのように処理されるかについても示しており、このトピックの優れた読み物です。