संभव डुप्लिकेट:
What is the difference between a field and a property in C#लोक accessors बनाम एक वर्ग के सार्वजनिक गुण
कोई अगर diffrence व्याख्या कर सकते हैं इन दोनों गुणों के बीच किसी भी?
public string City { get; set; }
public string City;
संभव डुप्लिकेट:
What is the difference between a field and a property in C#लोक accessors बनाम एक वर्ग के सार्वजनिक गुण
कोई अगर diffrence व्याख्या कर सकते हैं इन दोनों गुणों के बीच किसी भी?
public string City { get; set; }
public string City;
पहला एक वास्तविक संपत्ति है। दूसरा एक सिर्फ एक क्षेत्र है।
आम तौर पर बोलते हुए, फ़ील्ड private
रखा जाना चाहिए और क्या स्टोर वास्तविक डेटा हैं। गुण वास्तव में किसी भी डेटा को स्टोर नहीं करते हैं, लेकिन वे फ़ील्ड को इंगित करते हैं। उपरोक्त ऑटो-प्रॉपर्टी के मामले में, यह डेटा को पकड़ने के लिए दृश्यों के पीछे नेल जैसे छुपे हुए फ़ील्ड को स्वतः उत्पन्न करेगा।
आशा है कि इससे मदद मिलती है!
पहला सीएलआर संपत्ति है, जबकि दूसरा सिर्फ सार्वजनिक क्षेत्र है (संपत्ति नहीं)।
डब्ल्यूपीएफ और सिल्वरलाइट में, बाध्यकारी सार्वजनिक क्षेत्रों के साथ काम नहीं करता है, यह केवल सार्वजनिक गुणों के साथ काम करता है। यह मेरी राय में एक बड़ा अंतर है:
//<!--Assume Field is a public field, and Property is a public property-->
<TextBlock Text="{Binding Field}"/>
<TextBlock Text="{Binding Property}"/>
पहला व्यक्ति काम नहीं करेगा लेकिन दूसरा काम करेगा।
मेलमोकब ने कहा। पहले प्रकार संपत्ति है, संकलक का उपयोग समारोह और निजी क्षेत्र की तरह स्वत: उत्पन्न करेगा:
private String _city;
public String City(){ return _city ;}
.....
उपयोग गुण, आप _city की पहुँच उदाहरण के लिए
public String City(){
doXxxFunction();
return _city ;
}
तो नियंत्रित कर सकते हैं, ", आप हमेशा संपत्ति का उपयोग करना चाहिए, और सुनिश्चित करें कि सभी फ़ील्ड निजी हैं।