जहां तक मुझे याद है, मैंने हमेशा अपनी वस्तु के भीतर से मेरी सूची गुणों को प्रबंधित किया है, जिससे उन्हें पढ़ा जा सकता है।
private IList<DateTime> _dates;
public MyClass() {
_dates = new List<DateTime>();
}
public IList<DateTime> Dates {
get {
return _dates;
}
}
ऐसा करके, मैं आश्वासन देता हूं कि जब मैं इसे एक्सेस करता हूं तो मेरी सूची कभी भी शून्य नहीं होती है, क्योंकि ग्राहक इसे असाइन नहीं कर सकता है।
हालांकि, आपके उदाहरण के लिए, आपको केवल पूर्व दृष्टिकोण का उपयोग करने की आवश्यकता है यदि आपको संपत्ति प्राप्त करने या सेट करने पर किसी प्रकार की तर्क की आवश्यकता है। अन्यथा, स्वचालित गुण वही वही करते हैं जो आप चाहते हैं, केवल एक निजी क्षेत्र में मूल्य प्राप्त करना और सेट करना। इसके अलावा, { get; set; }
पठनीयता में सुधार करता है और मेरे विनम्र दृष्टिकोण में, अन्य प्रोग्रामर आपकी मंशा को समझने में सहायता करता है।
उदाहरण के लिए:
public class MyClass {
private IList<DateTime> _dates;
public IList<DateTime> Dates {
get {
return _dates;
} set {
_dates = value;
}
}
}
बनाम
public class MyClasse {
public IList<DateTime> Dates { get; set; }
}
दूसरा तरीका यह leaner और तेज, क्या इरादा है बनाता है कम से कम मेरे लिए,। और यह कक्षा को कोड करने के लिए तेज़ी से हो जाता है, जब गेटर और सेटर के अंदर कोई तर्क आवश्यक नहीं होता है।
अन्यथा, कोई दूसरे की तुलना में बेहतर नहीं है और यह वही करता है, जो किसी तर्क के साथ संपत्ति के मूल्य को प्राप्त करने और सेट करने की बात करता है।
सबसे महत्वपूर्ण बात यह है कि आपको अपने कोड से सहज रहने की आवश्यकता है। यदि यह आपके लिए समाप्त होता है तो कोई सुधार नहीं होता है, और आपको यह पसंद है कि आप ऐसा कर रहे हैं। =)
स्रोत
2010-08-20 15:05:23
के संभावित डुप्लिकेट [सी # 3.0 ऑटो गुण - उपयोगी है या नहीं] (http://stackoverflow.com/questions/9304/c-sharp-3-0-auto- गुण-उपयोगी-या-नहीं) – nawfal