मुझे पता है कि ऑटो-प्रॉपर्टी का उपयोग करते समय, कंपाइलर स्क्रीन के पीछे अपना बैकिंग फ़ील्ड बनाता है। हालांकि, कई कार्यक्रमों में मैं स्पष्ट रूप से लिखनेऑटो-प्रॉपर्टी के साथ या बिना बैकिंग फ़ील्ड - वरीयता?
private int _backingField;
public int Property { get { return _backingField; } }
क्या बीच का अंतर से ऊपर है, और नीचे से, मैं लोगों को देखने को जानने के लिए पढ़ा है?
public int Property { get; private set; }
मैं समझता हूँ कि संपत्ति का उपयोग करने के लिए अपनी स्पष्ट आप वास्तव में गेटर या सेटर में दुष्प्रभाव जब, लेकिन वह अक्सर ऐसा नहीं है। साथ ही, मैं समझता हूं कि आपको structs के मामले में बैकिंग फ़ील्ड का स्पष्ट रूप से उपयोग करना होगा, आप गुणों के माध्यम से अपने सदस्यों तक नहीं पहुंच सकते हैं।
एकमात्र अंतर जो मैंने पाया है वह यह है कि मूल्य को कॉल करने का तरीका उस वर्ग के अंदर अलग है जिसमें यह परिभाषित किया गया है। क्या यह सरल प्राथमिकता है, या इसकी संपत्ति के माध्यम से मूल्य को कॉल करने के लिए कुछ और है या सीधे क्षेत्र तक पहुंच कर? सरल सम्मेलन?
उदाहरण के रूप में XNA के वेक्टर 2 का उपयोग करके, यदि मैं सार्वजनिक वेक्टर 2 वेक्टर {प्राप्त करता हूं; सेट; } मैं TheVector.X = 10 पर कॉल नहीं कर सकता; इसके बजाय, मुझे वास्तविक फ़ील्ड का उपयोग करना होगा। मूल्य/संदर्भ से गुज़रने के बारे में कुछ। (क्या आपके पास कुछ पढ़ने वाली सामग्री है जो सी # के लिए मान/संदर्भ के आधार पर गुजरती है, एक sidenote के रूप में?) – Taelia
इसके अलावा, अगर मेरे दो उदाहरणों के बीच वास्तव में कोई अंतर नहीं है, तो अभी भी बहुत से लोग स्पष्ट रूप से बैकिंग फ़ील्ड क्यों बनाते हैं (असली के बिना उद्देश्य)? – Taelia
@ टेलिया: ठीक है, यह एक परिवर्तनीय संरचना का मामला है - जिसे मैं आम तौर पर टालता हूं। ऐसा इसलिए है क्योंकि संपत्ति मूल्य की प्रतिलिपि देता है। और मैं अन्य लोगों के लिए कारण देने का प्रयास नहीं करने जा रहा हूं। –