SORU
9 Ocak 2009, Cuma


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
9 Ocak 2009, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • MovieZoneET

    MovieZoneET

    22 Aralık 2009
  • pilslajt

    pilslajt

    20 HAZİRAN 2008