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

  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • engineerguy

    engineerguy

    10 Ocak 2010
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009