Ne '' in kilitler .NET?
Bir nedir? diye kapanması Onların içinde var .NET?
< / ^ br . İçinde varlar .NET, lütfen kod parçacığı sağlar (tercihen C#) bunu açıklamak için?
< / ^ br . EDİT: Jon Skeet bu kilitler ne olduğunu ve bunları nasıl kullanacağınızı anlamak için makale gittim .NET. < / ^ br .
CEVAP
an article on this very topic. (Örnekler vardır.)
Özünde, bir kapatma kod bloğu olabilir hangi yürütülen daha sonraki bir zamanda, ama hangi tutar ortamında hangisi ilk yarattığı - yani hala kullanılacak yerel değişkenler vb yöntemi yarattı, sonra bile bu yöntem var bitmiş yürütülüyor.
Kilitler genel özelliği C uygulanan# adsız yöntem ve lambda ifadeleri.
İşte size bir örnek isimsiz bir yöntem kullanarak:
using System;
class Test
{
static void Main()
{
Action action = CreateAction();
action();
action();
}
static Action CreateAction()
{
int counter = 0;
return delegate
{
// Yes, it could be done in one statement;
// but it is clearer like this.
counter ;
Console.WriteLine("counter={0}", counter);
};
}
}
Çıkış:
counter=1
counter=2
Burada eylem CreateAction tarafından döndürülen hala sayaç değişkenine erişim, ve gerçekten CreateAction kendisi bitmiş olsa bile bu artış, açıkça görülmektedir.
İşlev işaretçileri, Kilitler, ve Lambd...
Tam olarak, ve ne zaman bunları kullan...
Ne '' in kilitler .NET?...
Kilitler Python ile ilgili olarak açık...
Kilitler: neden bu kadar faydalı?...