मैं वर्तमान में क्लासिक कन्स्ट्रक्टर से आलसी प्रारंभिक गुणों में महंगी प्रारंभिकता के रूप में स्थानांतरित करने के लिए व्यापक रूप से उपयोग की जाने वाली कक्षा में बदलाव कर रहा हूं।गुणों के साथ आलसी प्रारंभिकरण के लिए तरीके
से पहले::
public class ClassA
{
public readonly ClassB B;
public void ClassA()
{
B = new ClassB();
}
}
के बाद:
public class ClassA
{
private ClassB _b;
public ClassB B
{
get
{
if (_b == null)
{
_b = new ClassB();
}
return _b;
}
}
}
कक्षा मैं फेरबदल कर रहा हूँ में इन गुणों का एक उचित कुछ और हैं, और कुछ नीचे (ग # में) एक उदाहरण है कुछ संदर्भों में उपयोग नहीं किया जाता है (इसलिए आलस्य), लेकिन यदि उनका उपयोग किया जाता है तो उन्हें बार-बार कहा जाने की संभावना है।
दुर्भाग्यवश, संपत्तियों का अक्सर कक्षा के अंदर भी उपयोग किया जाता है। इसका मतलब यह है कि बिना किसी विधि के निजी विधि (_b) का उपयोग सीधे किसी विधि द्वारा किया जा सकता है।
क्या कक्षा के अंदर केवल सार्वजनिक संपत्ति (बी) उपलब्ध कराने का एक तरीका है, या एक ही प्रारंभिक समय के साथ एक वैकल्पिक विधि भी आवश्यक है?
यह (नहीं पर्याप्त जाहिरा तौर पर व्यक्तिपरक) प्रोग्रामर्स से फिर से पोस्ट किया जाता है: https://softwareengineering.stackexchange.com/questions/34270/best-methods-for-lazy-initialization-with-properties
@ चतुरता: –