स्वचालित गुण गुणों पर बनाए जाते हैं। सी # में
गुण जावा में वे एक सम्मेलन कर रहे हैं एक भाषा विशेषता है, (प्राप्त या सेट के साथ शुरू तरीके अक्सर कोड के बारे में बात लोगों द्वारा गुण माना जाता है, लेकिन संकलक करने के लिए इसे foo या बार से अलग नहीं है)।
नेट और इससे संबंधित भाषाओं जहां कई मायनों (कभी कभी सूट निम्नलिखित में, कभी-कभी जानबूझकर नहीं कॉम में कुछ ऐसा है जो किसी न किसी कारण अलोकप्रिय के लिए था कर में) कॉम पर आधारित है।
COM में गुणों की एक अवधारणा है जो वीबी में भाषा सुविधाओं द्वारा समर्थित थी (सी ++ में इसे सम्मेलनों द्वारा समर्थित किया गया था)।
वीबी के शुरुआती संस्करण, विशेष रूप से उन संदर्भों में जहां इसे अन्यत्र से प्रदान किए गए ऑब्जेक्ट मॉडल के लिए मूल प्रोग्रामेटिक पहुंच प्रदान करने के लिए उपयोग किया गया था, जिसका लक्ष्य उपयोगकर्ताओं को प्रस्तुत किए गए ऑब्जेक्ट मॉडलों को सरल बनाना था ताकि वे एक क्षेत्र और एक विधि के बीच भेद कर सकें या सेट (शायद अतिरिक्त काम के साथ, शायद नहीं) महत्वहीन (मान लें कि जब वे .NET में बाहर से कुछ महत्वपूर्ण तरीके से भिन्न होते हैं, तो सिंटैक्टिक रूप से किसी संपत्ति और सार्वजनिक क्षेत्र तक पहुंच समान होती है)। जब वीबी और कॉम (और उस ओएलई से पहले) बड़े हो गए, तो वे एक साथ बड़े हुए।
तो सभी में, जबकि सी # जावा के साथ सी/सी ++ विरासत साझा करता है, लेकिन इसमें एक विरासत भी होती है जो जावा साझा नहीं करता है, जो गुणों को सी # के रचनाकारों के लिए एक अच्छा विचार प्रतीत होता है, लेकिन जावा के लिए नहीं।
संपादित करें: सबसे पहले मैं ने कहा:
व्यक्तिगत रूप से, मुझे लगता है कि स्वत: गुण वास्तव में अपने कोड को आसान बनाने के लिए एक रास्ता गुण में एक दोष के लिए एक समाधान के बजाय कर रहे हैं। गुण सार्वजनिक रूप से सार्वजनिक क्षेत्रों की तरह "देखो", लेकिन पूरी तरह से नहीं हैं (फ़ील्ड पुनर्प्राप्त करने के लिए DataBinder.Eval
का उपयोग करने का प्रयास करें)। अगर कोई संपत्ति पूरी तरह से सार्वजनिक थी, और गेटटर या सेटर (जो स्वचालित गुणों के साथ मामला है) में कोई अतिरिक्त कार्यक्षमता नहीं थी, तो मेरे पास सिर्फ एक सार्वजनिक क्षेत्र होगा (encapsulation यहां कोई तर्क नहीं है, क्योंकि इसे सार्वजनिक रूप से पूरी तरह से उजागर करना है- वैसे भी गुजरता है), लेकिन इसके खिलाफ खेतों और गुणों के बीच मतभेद काम करता है।
मैं उस कथन को वापस लेता हूं। गुणों की तरह फ़ील्ड बनाना साधारण सादा-पुराने डेटा structs के क्षेत्रों की आवश्यकता होती है ताकि गुणों की तरह कार्य किया जा सके, जो एक प्रदर्शन ढीला होगा। संकल्पनात्मक रूप से, मैं उन्हें एक दूसरे की तरह अधिक होना चाहता हूं, लेकिन जब भी मैं इस पर सोचता हूं (और मैं यहां से अधिक बार की तरह "ओह प्रतीक्षा" जाने से नाराज हो गया हूं), यह बेहतर है।
यह जावा के बाद से क्या लायक है, आपको अपने तरीकों का नामकरण करना चाहिए नाम, सेटनाम, आदि कई जावा आईडीई में डिजाइनर में गुण सेटटेबल बनाता है। उल्लेख नहीं है कि यदि जावा कभी * गुण प्राप्त करता है, तो मैं सभी गारंटी देता हूं कि उन मौजूदा बीन्स को केवल जादुई रूप से अंकुरित करने के लिए चश्मे इसका हिस्सा होंगे। – cHao
इसके लायक होने के लिए, सी # में ** स्वचालित ** गुण नहीं थे जब तक कि हाल ही में (अपेक्षाकृत)। –
क्योंकि यह नहीं करता है। सवाल मूल रूप से अर्थहीन है। आपको जावा, या वर्तमान उत्पाद प्रबंधक, या जावा सामुदायिक प्रक्रिया के डिजाइनरों से पूछना होगा, www.stackoverflow.com नहीं। – EJP