2009-12-10 11 views
7

मैं अक्सर गुणों के साथ ऑब्जेक्ट्स रखता हूं जो निम्न पैटर्न का उपयोग करते हैं:संपत्ति प्रारंभिकरण के लिए यह सी # पैटर्न क्या है?

private decimal? _blah; 
private decimal Blah 
{ 
    get 
    { 
     if (_blah == null) 
      _blah = InitBlah(); 
     return _blah.Value; 
    } 
} 

क्या इस विधि के लिए कोई नाम है?

+0

तुम सिर्फ एक 1 मिनट की अवधि के भीतर ठीक उसी जवाब का अधिक मिला है। मुझे लगता है कि मैंने कभी सो पर देखा है .... – jsmith

+3

@ जेस्मिथ ऐसा इसलिए है क्योंकि एसओ डेवलपर्स उत्सुकता से आलसी हैं! – philsquared

+0

@ फिल नैश टॉच! – jsmith

उत्तर

16

Lazy initialisation.

.NET 4, जब यह आता है, एक Lazy<T> वर्ग बिल्ट-इन करना होगा।

private readonly Lazy<decimal> _blah = new Lazy<decimal>(() => InitBlah()); 
public decimal Blah 
{ 
    get { return _blah.Value; } 
} 
+0

अच्छा, मुझे पता था कि यह किसी भी तरह से – Trent

+0

encapsulated किया जा सकता है आप अतिरिक्त प्रयास के लिए जवाब मिलता है। आलसी वर्ग का उल्लेख करने के लिए – Trent

+0

+1 bazillion। मैं इससे अनजान था, और अब एक और चीज देखने की उम्मीद है। – Randolpho

10

लेज़ी लोड हो रहा है, आस्थगित आरंभीकरण, आदि

noet कि InitBlah (इस मामले में) आदर्श रूप लौटना चाहिए decimal, नहीं decimal? मौका यह समय की बहुत सारी बुलाया जाता है कि क्योंकि यह वैध तरीके से रिक्त है से बचने के लिए।

0

यह लेज़ी प्रारंभ

संबंधित मुद्दे