2012-03-12 13 views
7

ठीक तो मैं समझता हूँ कि आयन VB6, एक कक्षा में समझाया गुण तीन श्रेणियों के लिए एक हो सकती है:क्या सार्वजनिक संपत्ति, मित्र और VB6 में सार्वजनिक चर के बीच अंतर है

  • सार्वजनिक संपत्ति
  • दोस्त
  • सार्वजनिक चर

इन में क्या अंतर है और कैसे इस तरह के सी # एक और अधिक आधुनिक भाषा में सार्वजनिक और निजी संपत्तियों की तुलना करते हैं?

+3

एर, आप निजी संपत्तियों के बारे में भूल गए हैं। किसी भी मामले में प्रश्नों को मैन्युअल पढ़ने से आसानी से उत्तर दिया जाता है। – Bob77

उत्तर

9

का उपयोग कर रहा है गुंजाइश क्वालिफायर आप सेट कर सकते हैं के बाद सेPublic और Frienddetermine चाहे विभिन्न परियोजनाओं में ग्राहक आइटम देख सकें।

  • Public आइटम अन्य परियोजनाओं और एक ही परियोजना में कोड में ग्राहक कोड के लिए सुलभ हो जाएगा।
  • Friend आइटम अन्य परियोजनाओं में कोड के लिए केवल उसी प्रोजेक्ट में कोड के लिए एक्सेसिबल हैं, नहीं।
  • Private आइटम केवल उसी कक्षा में कोड के लिए एक्सेसिबल हैं। जब ग्राहक हो जाता है या मूल्य सेट क्योंकि गुणों के साथ आप अपने खुद के कोड निष्पादित कर सकते हैं

गुण, सार्वजनिक चर से अलग हैं। डीना की टिप्पणी के बाद संपादित करें: यह भी ध्यान दें कि चर को एक समारोह में ByRef पास किया जा सकता है और परिवर्तन अपेक्षित के रूप में कार्य करेंगे। यह गुणों के लिए मामला नहीं है।

एनबी सी # अधिक आधुनिक हो सकता है, लेकिन आईएमएचओ गुणों और सार्वजनिक चर के वीबी 6 उपचार .NET उपचार की तुलना में significantly better है।

  • वीबी 6 में आप क्लाइंट को तोड़ने के बिना किसी सार्वजनिक चर को किसी संपत्ति में बदल सकते हैं। आपको उन्हें पुनः संयोजित करने की भी आवश्यकता नहीं है। .NET में Not true
  • वीबी 6 में सार्वजनिक चर का उपयोग डेटा बाइंडिंग के साथ किया जा सकता है। .NET में Not true
  • वीबी 6 में सार्वजनिक चर का उपयोग इंटरफेस के साथ किया जा सकता है। .NET में Not true

आईएमएचओ माइक्रोसॉफ्ट ने गुणों और सार्वजनिक क्षेत्रों के बीच इन मतभेदों को बनाने में वास्तविक डिजाइन गलती की। नेट। आश्वस्त नहीं? .Net की पहली रिलीज के बाद, C# और VB कंपाइलर्स को automatically implemented properties का समर्थन करने के लिए संशोधित किया गया था। ये आपको कोड की केवल एक पंक्ति में गुण बनाने की अनुमति देता है, ताकि समस्याएं उत्पन्न किए बिना प्राप्त/सेट पर तर्क जोड़ना संभव हो। आईएमएचओ यह साबित करता है कि सार्वजनिक चर को गुणों से अलग किया जाना चाहिए था।


1 मान लिया जाये कि अपनी परियोजना प्रकार वास्तव में अपनी कक्षाओं अन्य परियोजनाओं (अर्थात ActiveX DLL, OCX, या ActiveX exe) द्वारा इस्तेमाल किया जा सकता है।
, Property Let और Property Set प्रक्रियाओं में।

+0

वीबी 6 में, कक्षाओं में परिभाषित सार्वजनिक चर को गुणों के रूप में कवर के तहत संकलित किया जाता है। इसे संकलित करने के बाद डीएलएल का निरीक्षण करने के लिए ओएलई व्यू जैसे टूल का उपयोग करके देखा जा सकता है। वे आपके द्वारा उल्लिखित "स्वचालित रूप से कार्यान्वित गुण" के समतुल्य हैं। – tcarvin

+0

क्षमा करें, जब मैंने देखा "वीबी 6 में आप क्लाइंट को तोड़ने के बिना एक सार्वजनिक चर को किसी संपत्ति में बदल सकते हैं" मैंने सोचा कि यह ओपी को इंप्रेशन दे सकता है कि वीबी 6 में खुला कक्षाओं में सार्वजनिक चर है। – tcarvin

+1

यह भी ध्यान दें कि चर को एक समारोह में ByRef पास किया जा सकता है और परिवर्तन अपेक्षित के रूप में काम करेंगे। यह गुणों के लिए मामला नहीं है। मुझे उम्मीद है कि यही कारण है कि वे .NET/IL में फ़ील्ड और गुणों में विभाजित थे। – Deanna

2
  • लोक मतलब यह है कि यह किसी भी अन्य वर्गों है कि अपनी परियोजना refferences/dll द्वारा पहुँचा जा सकता है।
  • मित्र मतलब है कि यह अपने विधानसभा के भीतर किसी अन्य वर्गों द्वारा पहुँचा जा सकता है

चर और संपत्ति allmost ही कर रहे हैं (ताकि केवल exe आप में वर्ग बनाया)। संपत्ति पसंद है अन्य वर्गों सेट या चर प्राप्त कर सकते हैं (संपत्ति चर समाहित)

सी # में यह वही, केवल आप ही आंतरिक बजाय मित्र

1

निजी संपत्ति वे संपत्ति है जो स्वयं और अन्य परिवार के सदस्य द्वारा उपयोग की जाती हैं। लेकिन, सार्वजनिक संपत्ति वे संपत्ति हैं जिनका उपयोग हमारे समुदाय, समाज या देश के सभी लोगों द्वारा किया जाता है।

+0

इस तरह के एक साधारण सादृश्य, लेकिन मुझे लगता है कि यह वास्तव में इसका वर्णन करता है। –

संबंधित मुद्दे