दिलचस्प पोस्ट
Android के लिए स्वत: फिट टेक्स्टदृश्य 2 की अगली शक्ति तक गोल करना पता लगाएँ कि ब्राउज़र फ़ाइल डाउनलोड कब प्राप्त करता है Windows में वाइल्डकार्ड होस्ट फ़ाइल स्विफ्ट में निब से कस्टम UITableViewCell SCRIPT7002: XMLHttpRequest: नेटवर्क त्रुटि 0x2ef3, त्रुटि 00002ef3 के कारण ऑपरेशन पूरा नहीं कर सका निलंबित घटना WinRT का प्रयोग नहीं कर रहा है कुकी अवरुद्ध / इंटरनेट एक्सप्लोरर में IFRAME में सहेजा नहीं मैं Windows पर c ++ कंसोल एप्लिकेशन से यूटीएफ -8 कैसे प्रिंट करूं? जावा का उपयोग कर एक बाइट सरणी के लिए हेक्स डंप के स्ट्रिंग का प्रतिनिधित्व करना है? ओरेकल में एक मेज के रूप में 'के रूप में' कीवर्ड का उपयोग कैसे करें? समय के लिए दिनांक समय डालना कैसे करें ब्राउज़र / टैब सक्रिय है या नहीं यह कैसे बताने के लिए त्रुटि कोड: 2013. क्वेरी के दौरान MySQL सर्वर से कनेक्शन खो गया जावास्क्रिप्ट का उपयोग करते हुए मैं एक चुनिंदा बॉक्स एलीमेंट के मूल्य को प्रोग्राममैटिक रूप से कैसे निर्धारित करूं?

संपत्ति (बिना अतिरिक्त प्रसंस्करण) बनाम सार्वजनिक क्षेत्र

जब भी गुणों की विश्वसनीयता के बारे में सवाल होता है, तो मुझे लगता है कि ज्यादातर चर्चा कार्य / तरीके बनाम संपत्तियों के आसपास होती है। लेकिन मुझे यह भी पता होना चाहिए कि संबद्ध प्राइवेट फ़ील्ड बनाम पब्लिक फील्ड के साथ संपत्ति का उपयोग करने के लिए सम्मोहक कारण यह है कि किसी अन्य प्रसंस्करण के साथ सबसे सामान्य मिल / सैट के व्यवहार के लिए, मैं इसका मतलब हूं

public string CustomerName; 

बनाम

 private string customerName; public string CustomerName { get{return customerName;} set(string value){this.customerName=value;} } 

वेब के समाधान से एकत्रित समाधान "संपत्ति (बिना अतिरिक्त प्रसंस्करण) बनाम सार्वजनिक क्षेत्र"

आपको स्रोत / बाइनरी संगतता प्राप्त होती है, यदि आपको बाद में दूसरे व्यवहार को जोड़ने की आवश्यकता होती है, तो आपको ब्रेक पॉइंट जोड़ना पड़ता है, और यह सिर्फ दार्शनिक तौर पर क्लीनर है (व्यवहार के बारे में देखभाल, संग्रहण तंत्र नहीं)

ध्यान दें कि आपको सी # 3 में पूरे ब्लॉक की आवश्यकता नहीं है:

 public string CustomerName { get; set; } 

अधिक जानकारी के लिए "क्यों गुण मैटर" पर मेरा लेख देखें

  1. आप किसी व्युत्पन्न कक्षा में "नई" संपत्ति को ओवरराइड कर सकते हैं या कम से कम कर सकते हैं

  2. इस बिंदु पर लोगों को उम्मीद है कि संपत्तियों को उजागर किया जाएगा और छिपाए जाने वाले क्षेत्र होंगे अगर कोई आपकी कक्षा (यह कैसल विंडसर, एनएचबरनेट जैसे उपकरणों के साथ अधिक से अधिक सामान्य हो रहा है) को प्रतिबिंबित करने जा रहा है, तो अंतर की दुनिया है, वे संभावनाओं के सामने आने वाले क्षेत्रों की जांच नहीं करेंगे।

यह ज्यादातर जावा में एक बग है कई अन्य भाषाओं (पायथन, डेल्फी, ग्रूवी) में, कंपाइलर आपके लिए गेटर्स और सेटर्स उत्पन्न करेगा जब तक कि आप कोड की आपूर्ति न करें

इसका अर्थ है कि आप Groovy में एक "सार्वजनिक" फ़ील्ड का उपयोग कर सकते हैं और कंपाइलर चुपचाप उत्पन्न करेगा और सेटर / सेटर खोलेंगे यदि आपको कोई क्षेत्र बदला गया है, तो आपको अतिरिक्त जादू करने की ज़रूरत है, तो आप एक विशेष सेटर को पेश कर सकते हैं और सब कुछ काम करेगा।

यह उन चीजों में से एक है जहां वास्तविकता एक डिजाइन के साथ संघर्ष करती है जावा डिजाइनर संकलक को ऐसा कुछ करने के लिए नहीं चाहते थे जो आप नहीं देख सकते। कई सालों पहले एक अच्छा विचार की तरह लग रहा था, बहुत अच्छी तरह से बाहर नहीं हुआ।

मैं संपत्ति का एक उपयोगी उपयोग देखता हूं यदि आप अपने ऑब्जेक्ट के संग्रह को एक डाटाग्रीड या डाटाग्रीड दृश्य या अन्य बाइंडेबल कंट्रोल के साथ बाँध रहे हैं, तो केवल मान्यता प्राप्त योग्य नाम हैं संपत्ति और सार्वजनिक क्षेत्र नहीं।

आप गुणों के साथ कुछ बुनियादी सत्यापन भी प्रदान कर सकते हैं उदाहरण के लिए किसी संपत्ति को अमान्य स्थिति में ऊंचाई के लिए नकारात्मक मान की तरह सेट करना रोकने के लिए:

 private int height; public int Height { get{ return height; } set { if (value > 0) { height = value; } } }