निजी गुण उन चीजों के व्यवहार को रोकने के लिए बहुत उपयोगी हो सकते हैं जो आपकी कक्षा के लिए आंतरिक हैं। सिर्फ इसलिए कि वे निजी हैं इसका मतलब यह नहीं है कि आपको सिंटैक्टिक शुगर का लाभ नहीं लेना चाहिए जो कि गुण आपको देते हैं।
हालांकि दिया गया उदाहरण एक गरीब है। बॉयलरप्लेट संपत्ति पाने वाले और इस तरह बसने वाले लगभग हमेशा एक बुरा विचार होते हैं। यदि आप C # 3.0 या बाद में उपयोग कर रहे हैं, तो ऑटो गुण एक बेहतर विचार हैं:
private string Whatever { get; set; };
यह छोटा है, क्लीनर है, और बहुत अधिक पठनीय है। वास्तव में यह केवल बैकिंग चर घोषित करने की तुलना में मुश्किल से लंबा है।
सबसे महत्वपूर्ण बात यह है कि, बाकी कार्यक्रमों के शब्दार्थों को बदलने के बिना किसी भी समय ऑटो गुणों को पूर्ण गुणों में परिवर्तित किया जा सकता है! इस प्रकार यदि आपको सत्यापन या त्रुटि को जोड़ने की आवश्यकता है, तो आप ऐसा आसानी से कर सकते हैं।
यह है के रूप में, मैं हमेशा सोचा था कि यह शर्म की बात थी तुम, एक ही संपत्ति को पढ़ने के लिए नहीं कर सकता है कि केवल निर्माता में मूल्य में लिखने के लिए सक्षम किया जा रहा लागू करने के लिए, (मैं अपरिवर्तनीय प्रकार पसंद करते हैं ), लेकिन यह सी # 6.0 में जोड़ा गया है के रूप में "ऑटो-प्रॉपर्टी इनिशियलाइज़र", जो आपको करने की अनुमति देता है:
private string Whatever { get; } = ...;
या
private string Whatever { get; };
साथ में
Whatever = ...;
कंस्ट्रक्टर में।