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

  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • Moto Journal

    Moto Journal

    28 Mayıs 2007