私は彼らが言うれるreading this article about closuresしてきた:あなたは「 クロージャーには特別なものは何ですか?
- は、「すべての配管は、自動で」
など、.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;
}
}
}
回答
だから、この1への答えは、マルクが指摘Jon Skeet's article on closuresを読むことです。この記事では、C#でラムダ式に至るまでの進化を示すだけでなく、このトピックの優れた読解であるJavaでクロージャがどのように処理されるかを示しています。
他の言語(Javascriptなど)でクロージャをサポートしています。概念やC#の具体的な実装について質問していますか? – strager
私はその例が閉鎖の力を理解するにはあまりにも単純だと思います。 –
@strager:私は一般的なコンセプトを意味しています。私は、デリゲート、クロージャー、マップ、ラムダ、ラムダ式、ラムダツリー、無名関数、カリングなどの周りに頭を浮かべています。 Stackoverflowはあなたのタイトルが「不十分でユニークな単語を追加する」と言っているので、C#をタイトルに入れていたのですが、どの言語をも超えているように見える関数プログラミングのパラダイムが数学などに根付いています... ) –