मैं इसे एक कदम आगे ले जाऊंगा, और इसे 3 मामलों में लाऊंगा। यद्यपि प्रत्येक पर भिन्नताएं हैं, यह वह नियम है जो मैं उस समय के अधिकांश उपयोग करता हूं जब सी # प्रोग्रामिंग।
2 और 3 के मामले में, हमेशा प्रॉपर्टी एक्सेसर (फील्ड वेरिएबल नहीं) पर जाएं। और मामले 1 में, आप इस विकल्प को बनाने से भी बच जाते हैं।
1.) अचल संपत्ति (कंस्ट्रक्टर में उत्तीर्ण, या निर्माण के समय बनाई गई)। इस मामले में, मैं केवल पढ़ने के लिए संपत्ति के साथ एक क्षेत्र चर का उपयोग करता हूं। मैं इसे एक निजी सेटर पर चुनता हूं, क्योंकि एक निजी सेटर अपरिवर्तनीयता की गारंटी नहीं देता है।
public class Abc
{
private readonly int foo;
public Abc(int fooToUse){
foo = fooToUse;
}
public int Foo { get{ return foo; } }
}
2.) POCO चर। एक साधारण चर जो किसी भी सार्वजनिक / निजी दायरे में प्राप्त / सेट किया जा सकता है। इस मामले में मैं सिर्फ एक स्वचालित संपत्ति का उपयोग करूंगा।
public class Abc
{
public int Foo {get; set;}
}
3.) ViewModel बाध्यकारी गुण। INotifyPropertyChanged का समर्थन करने वाली कक्षाओं के लिए, मुझे लगता है कि आपको एक निजी, बैकिंग फ़ील्ड चर की आवश्यकता है।
public class Abc : INotifyPropertyChanged
{
private int foo;
public int Foo
{
get { return foo; }
set { foo = value; OnPropertyChanged("foo"); }
}
}