Ich habe in dem reading this article about closures gewesen, sagen sie:Was ist das Besondere an Verschlüssen?
-
„alle Sanitär-Automatik ist“
- der Compiler „erzeugt eine Wrapper-Klasse“ Sie und „verlängert die Lebensdauer der Variablen“
- “ lokale Variablen ohne Sorge“kann
- .NET-Compiler für Sie kümmern sich um die Sanitär nimmt usw.
so machte ich ein Beispiel, basierend auf ihren Code und mir scheint es, als obwohl die Schließungen nur ähnlich wie die regulären benannten Methoden funktionieren, die sich auch "ohne Sorgen um die lokalen Variablen kümmern" und in denen "alle Rohrleitungen automatisch sind".
Oder welches Problem hat dieses "Wrapping von lokalen Variablen" gelöst, das Schließungen so besonders/interessant/nützlich macht?
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;
}
}
}
Antwort
So ist die Antwort auf diese ist Jon Skeet's article on closures, die Marc wies darauf hin, zu lesen. Dieser Artikel zeigt nicht nur die Evolution, die zu Lambda-Ausdrücken in C# führt, sondern zeigt auch, wie Closures in Java behandelt werden, eine ausgezeichnete Lektüre für dieses Thema.
Andere Sprachen (z. B. Javascript) unterstützen Schließungen. Fragen Sie nach dem Konzept oder der spezifischen Implementierung von C#? – strager
Ich denke, dieses Beispiel ist zu einfach, um die Macht der Schließungen zu verstehen. –
@strager: Ich meine das Konzept im Allgemeinen, ich versuche, mich um Delegierte, Schließungen, Karten, Lambdas, "Lambda-Ausdrücke", "Lambda-Bäume", anonyme Funktionen, Currying usw. und im Allgemeinen die neue Paradigmen funktionaler Programmierung, die über eine Sprache hinausgehen, haben ihre Wurzeln in Mathematik usw. (Ich hatte C# in den Titel geschrieben, weil Stackoverflow Ihnen jetzt sagt, dass Ihr Titel es "nicht gut genug ist, fügen Sie einzigartige Wörter hinzu ...") –