ऑटो संपत्तिऑटो कार्यान्वित संपत्ति, जहां डेवलपर को स्पष्ट रूप से समर्थन क्षेत्र घोषित करने के लिए की जरूरत नहीं है के लिए एक छोटी पद है और संकलक एक सेट पर्दे के पीछे।
1. निजी सेटर के साथ स्वत: संपत्ति
public class Context1
{
public Context1()
{
this.Items = new List<string>();
}
public List<string> Items { get; private set; }
}
ऑटो गुण एक्सेसर जिसके लिए पहुँच संपत्ति की पहुँच से अलग है के लिए एक अधिक प्रतिबंधात्मक पहुँच निर्दिष्ट द्वारा सेटर और गेटर के लिए अलग accessibilities हो सकता है।
अन्य उदाहरण हैं:
public string Prop1 { get; private set; }
public string Prop2 { get; protected set; }
public string Prop3 { get; internal set; }
public string Prop4 { protected internal get; set; }
विभिन्न पहुँच के साथ ये accessors के लिए पहुँचा जा सकता है कहीं भी है कि पहुँच को निर्धारित करता है, न कि केवल निर्माता से।
2।बैकिंग फ़ील्ड
सार्वजनिक वर्ग संदर्भ 2 { निजी रीडोनली सूची आइटम के साथ केवल पढ़ने योग्य संपत्ति;
public Context2()
{
this.items = new List<string>();
}
public List<string> Items
{
get { return this.items; }
}
} पहले सी # 6, एक रीड ओनली-संपत्ति का मूल्य निर्धारित करने के लिए एक ही रास्ता स्पष्ट रूप से समर्थन क्षेत्र घोषित करने और इसे सीधे सेट करने के लिए किया गया था।
क्योंकि क्षेत्र readonly
एक्सेसर है, यह केवल वस्तु के निर्माण के दौरान सेट किया जा सकता।
3. केवल पढ़ने के लिए स्वत: संपत्ति
public class Context3
{
public List<string> Items { get; } = new List<string>();
}
सी के साथ शुरू # 6, §2 संकलक द्वारा संभाला जा सकता है द्वारा एक समर्थन क्षेत्र है पढ़ने-लिखने की स्वत: संपत्तियों के लिए की तरह उत्पन्न लेकिन , इस मामले में, बैकिंग फ़ील्ड केवल पढ़ने के लिए है और केवल वस्तु के निर्माण के दौरान सेट किया जा सकता है।
4. केवल-पढ़ने के ऑटो-संपदा अभिव्यक्ति शरीर गेटर साथ
public class Context4
{
public List<string> Items => new List<string>();
}
गुण एक मूल्य, सी # 6 का उपयोग कर गेटर के शरीर घोषित करने के लिए अनुमति देता है कि हर बार इसे पाने के है बदल जाता है जब लैम्ब्डा-जैसे वाक्यविन्यास।
ऊपर कोड इस के बराबर है:
public class Context4
{
public List<string> Items
{
get { return new List<string>(); }
}
}
तो 4 नंबर एक लगातार की तरह, लेकिन एक संदर्भ प्रकार के साथ है !? –
यदि "निरंतर" से आपका मतलब है "लगातार इस मान का एक नया उदाहरण लौटाता है" (à la https://xkcd.com/221), तो ... ओह, मुझे ऐसा लगता है। लेकिन यह "स्थिर" का मतलब नहीं है। एक संदर्भ संदर्भ प्रकार है * स्थिरांक नहीं हो सकता है। – BoltClock
नंबर 1 और 2 समान हैं? –