हाल ही में मुझे सिंगलटन क्लास के साथ कुछ समस्याएं थीं जो आलसी शुरू करने वाले आलसी थे जहां एक दूसरा धागा वास्तव में पॉप्युलेट होने से पहले इसका उपयोग करने का प्रयास करेगा। इसलिए मैंने Lazy<T>
कक्षा के माध्यम से परिवर्तनीय प्रारंभिकरण लागू किया।प्रदर्शन के लिए आलसी <T> खराब है?
private static Dictionary<string, string> GroupDefaults
{
get { return mGroupDefaults.Value; }
}
private static Lazy<Dictionary<string, string>> mGroupDefaults =
new Lazy<Dictionary<string,string>>(delegate
{
Dictionary<string, string> defaults = new Dictionary<string, string>();
foreach (KeyValuePair<string, UnitGroup> groupDef in Groups)
defaults.Add(groupDef.Key, groupDef.Value.First().Key);
return defaults;
});
यह समस्या ठीक हो गई है और अब मैं इस Lazy<T>
वर्ग का उपयोग करने के मेरा एक नियमित अभ्यास कर रही है पर विचार कर रहा हूँ कहीं मैं आलसी प्रारंभ करना किसी भी संभव सूत्रण मुद्दों से बचने के:
यहाँ मेरी कोड है। तो मूल रूप से मैं जानना चाहता हूं कि यह अच्छा/सामान्य अभ्यास है या नहीं? या यह प्रदर्शन या कुछ के लिए हानिकारक होगा?
तो यह आलसी कक्षा का उपयोग करने के लिए एक अच्छा अभ्यास है? –
@ AlexHopeO'Connor यही कारण है कि इसे जोड़ा गया था! कक्षा का उपयोग करने का नकारात्मक हिस्सा यह है कि क्षेत्र/संपत्ति की घोषणा थोड़ा गड़बड़ हो जाती है (जैसा कि आप देख सकते हैं) लेकिन प्रदर्शन के अनुसार, यह ठोस है। – dlev
मुझे जो कुछ सुनने की ज़रूरत है, वहीं मैंने इसे अन्य लोगों के कोड में कई उदाहरण नहीं देखा है। –