SORU
4 Mart 2009, ÇARŞAMBA


Beforefieldinit bayrağı ne yapar?

Beforefieldinit bayrağı ne yapar? Benim sınıf IL içine baktığımda bu bayrak aslında ne yaptığını bilmiyorum ama bu bayrak görüyorum?

CEVAP
4 Mart 2009, ÇARŞAMBA


Bu konuda my article bkz.

Temelde, beforefieldinit "türü herhangi bir statik alanlar başvurulan önce herhangi bir noktada başlatılabilir." anlamına gelirTeorideo olabilir anlamına gelirçok tembelbaşlatıldı - eğer herhangi bir alanı dokunmaz statik bir yöntem çağrısı, JİT türünü başlatmak gerek yok.

Uygulamadasınıf başlatıldı anlamına gelirdaha öncebaşka türlü olacağını daha - ilk yöntemi başında başlatılması için sorun değilolabilirbunu kullanın. Hangi türleri ile karşılaştırınyokyazın başlatma hemen önce ortaya bulunduğu beforefieldinit uygulanmışgerçekkullanın.

, Düşün yani:

public static void DoSomething(bool which)
{
    if (which)
    {
        FirstType.Foo();
    }
    else
    {
        SecondType.Bar();
    }
}

Eğer her iki tür beforefieldinit uygulanmayacak olan C (#türü statik oluşturucu sürece varsayılan olarak yaparlar) ederlerher ikisi deyöntem başında başlatıldı (genellikle garanti değil). beforefieldinit ancak o zaman yokbirbaşlatılması onları olacak, bayrağı dayalı.

Bu ortak statik oluşturucu (hatta boş bir!) kullanmak için kullanılır implementing the singleton pattern zaman.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • Propaganda Time

    Propaganda T

    19 EYLÜL 2010