SORU
27 EKİM 2010, ÇARŞAMBA


C# Tembel Yüklenen Otomatik Özellikleri

C#,

Bir şekilde belirtilen varsayılan değeri tembel dolu otomatik bir özelliği otomatik özelliği devre var mı?

Aslında, bu da... anlatmaya çalışıyorum

private string _SomeVariable

public string SomeVariable
{
     get
     {
          if(_SomeVariable == null)
          {
             _SomeVariable = SomeClass.IOnlyWantToCallYouOnce();
          }

          return _SomeVariable;
     }
}

farklı bir şey içine, varsayılan belirtin ve gerisini otomatik olarak kolları...

[SetUsing(SomeClass.IOnlyWantToCallYouOnce())]
public string SomeVariable {get; private set;}

CEVAP
27 EKİM 2010, ÇARŞAMBA


Yok yok. Otomatik uygulanan özellikler yalnızca özellikleri en temel uygulamak için fonksiyon: alıcı ve ayarlayıcı ile destek alan. Özelleştirme bu tür bir destek yok.

Ancak bu model oluşturmak için 4.0 Lazy<T> türü kullanabilirsiniz

private Lazy<string> _someVariable =new Lazy<string>(SomeClass.IOnlyWantToCallYouOnce);
public string SomeVariable {
  get { return _someVariable.Value; }
}

Bu kod, tembel _someVariable değeri Value ifade denir ilk kez hesaplar. Sadece bir kez hesaplanır ve Value özelliği önbellek gelecekteki kullanımlar için değer

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • Kim Barbin

    Kim Barbin

    3 Mayıs 2012
  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008