2010-10-07 18 views
6

किसी दिए गए वर्ग के लिए, सूची की डिफ़ॉल्ट संपत्ति के साथ, आप myClass.defProperty ("key") करके सूची में एक इंस्टेंस ऑब्जेक्ट तक पहुंच सकते हैं। आप myClass.defProperty टाइप करके भी वही परिणाम प्राप्त कर सकते हैं! कुंजी।विजुअल बेसिक में बैंग बनाम डिफ़ॉल्ट संपत्ति

मुझे बताया गया है कि कोष्ठक और उद्धरण का उपयोग कर तेज़ तरीका क्रम तक पहुँचता संपत्ति के लिए है, लेकिन मैं समझने के लिए अंतर है और कैसे प्रत्येक काम करना क्या चाहते हैं ...

मैं समझता हूँ सी # में वर्ग ब्रैकेट के साथ कोष्ठक को प्रतिस्थापित करके समान व्यवहार होता है।

उत्तर

5

को देखते हुए दृश्य Basic.NET में निम्न कोड:

Dim x As New Dictionary(Of String, String) 
x.Item("Foo") = "Bar" 

आप निम्न में से किसी का उपयोग कर शब्दकोश की "फू" सदस्य पहुँच सकते हैं:

Dim a = x!Foo 
Dim b = x("Foo") 
Dim c = x.Item("Foo") 

आप को देखो, तो आईएलएल के तहत Reflector.NET के बाद आप पाएंगे कि वे सभी अनुवाद करते हैं:

Dim a As String = x.Item("Foo") 
Dim b As String = x.Item("Foo") 
Dim c As String = x.Item("Foo") 

तो, वे सभी समकक्ष हैं आईएल में टी और, ज़ाहिर है, वे सभी एक ही गति पर निष्पादित करते हैं।

बैंग ऑपरेटर केवल आपको मानक रूप से परिभाषित कुंजी का उपयोग करने देता है जो मानक परिवर्तनीय नामकरण नियमों के अनुरूप है।

अनुक्रमित दृष्टिकोण का उपयोग करके आपकी चाबियाँ लगभग किसी वैध मान (इस मामले में स्ट्रिंग) हो सकती हैं और आप कुंजी का प्रतिनिधित्व करने के लिए चर का उपयोग कर सकते हैं।

कोड पठनीयता के लिए मैं x.Item("Foo") नोटेशन की अनुशंसा करता हूं क्योंकि यह क्या हो रहा है के बारे में बहुत स्पष्ट है। x("Foo") को किसी प्रक्रिया के लिए कॉल के साथ भ्रमित किया जा सकता है और x!FooFoo एक चर जैसा दिखता है और स्ट्रिंग नहीं (जो वास्तव में है) बनाता है। यहां तक ​​कि स्टैक ओवरफ़्लो रंग-कोडिंग Foo एक कीवर्ड की तरह दिखता है!

इस कोड के लिए सी # समकक्ष x["Foo"]; है। ! वाक्यविन्यास समतुल्य नहीं है।

तो, नीचे की रेखा यह है कि ! प्रदर्शन पर बेहतर या खराब नहीं है और केवल कोड रखरखाव को और अधिक कठिन बना सकता है, इसलिए इसे टालना चाहिए।

+0

भविष्य के संदर्भ के लिए ... अब मुझे एहसास हुआ कि डीबगिंग उद्देश्यों के लिए '! 'बेहतर है क्योंकि यह आपको ब्रेकपॉइंट पर खड़े होने पर मौजूदा इंडेक्स पर आइटम की सामग्री देखने की अनुमति देता है जबकि अन्य आपको बताएंगे कि' अनुक्रमित संपत्ति देखें '। – PedroC88

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