Is it possible to declare a local/class instance member reference variable in VB.net to read/update same object referred by another variable -


सी ++ में, ऐसा करना संभव है:

  int x; पूर्णांक में & amp; Foo = x; // foo अब x का एक संदर्भ है, इसलिए यह x से 56 फ़ू = 56 सेट करता है;   

लेकिन क्या Visual Basic .net (VB.net) में संभव है?

मुझे वीबी में ByRef शब्द से अवगत हैं .net, लेकिन मैंने केवल (और व्यापक शोध के द्वारा) कार्य / उप-पंक्तियों के संदर्भ में मानकों को पारित करते हुए देखा है, ताकि फ़ंक्शन कॉलिंग कोड द्वारा घोषित एक ही वैरिएबल को संशोधित कर सके।

लेकिन मैंने ByRef को वैरिएबल घोषित करने के लिए उपयोग नहीं किया है (कक्षा सदस्यों या स्थानीय चर के रूप में) मैं इस तरह के एक घोषणा करने के लिए ByRef उपयोग करने के लिए कोशिश की है, लेकिन मैं घोषणा मैं कोशिश में से प्रत्येक के आदेश देने के लिए संकलक त्रुटियों मिलता है।

कारण है कि मैं ऐसा करना चाहते हैं, क्योंकि मैं है एक क्लास उदाहरण चाहते हैं कि किसी अन्य क्लास इंस्टेंस में घोषित वेरिएबल को संदर्भित करने में सक्षम हो।

विशेष रूप से, मैं कुछ मौजूदा VB.net कोड पर काम कर रहा हूं जहां प्रोग्राम लॉजिक VB.net फॉर्म क्लास में यूआई लॉजिक के साथ मिश्रित होता है। मैं प्रपत्र कोड से प्रोग्राम तर्क को अलग करना चाहता हूं जिससे कि इसे और अधिक आसानी से पुन: उपयोग किया जा सके। ऐसा करने के लिए मुझे प्रोजेक्ट लॉजिक कोड की आवश्यकता होती है, ताकि वह फॉर्म कोड में 'टॉक' कर सकें, जिससे मुझे इसके वैरिएबल तक पहुंच की आवश्यकता हो।

मैं वीबीनेट के साथ विजुअल स्टूडियो 2010 एक्सप्रेस का प्रयोग कर रहा हूं और इस माहौल में रहना, भले ही मुझे पता है कि पूर्ण विज़ुअल स्टूडियो ने क्षमता बढ़ा दी है।

संकेतक मौजूद हैं लेकिन वे ऑब्जेक्ट संदर्भों को फिर से कहा जाता है

(अब अन्य पोस्टर, कृपया यहां वास्तविक मतभेदों के बारे में मुझसे बात न करें। मैं उच्च स्तर के कार्य के बारे में बात कर रहा हूं जो ओ.पी. पूरा करना चाहता है)

जाहिर है आप सचमुच जो कुछ भी कहा है, वह नहीं कर सकते - यही है, शल्यचिकित्सक एक सदस्य को हेरफेर करते हैं। लेकिन अगर आपके पास कोड का नियंत्रण है, तो आप लगभग भी उतने ही कर सकते हैं। और जो भी आप वर्णन करते हैं वह आपकी समस्या है, यह विधि बहुत बेहतर होगी, क्योंकि आप किसी ऐसे ऑब्जेक्ट के संदर्भ पा सकते हैं, जिसमें कई सदस्य हैं जिन्हें आप अपडेट करना चाहते हैं, कई व्यक्तिगत पॉइंटर्स पास करने के बजाय।

पहले एक वर्ग को परिभाषित:

  कक्षा MyScreenValues ​​'गुण ... के लिए संक्षिप्तता लोक TextBox1Value सार्वजनिक क्षेत्रों का उपयोग कर के रूप में स्ट्रिंग सार्वजनिक SpinControl1Value बूलियन समाप्ति कक्षा   के रूप में पूर्णांक सार्वजनिक CheckBox1Value रूप में काम करेंगे 

अब आपके द्वारा पोस्ट किए गए कोड के समतुल्य:

  मंद एक्स के रूप में नए माइस्स्क्रीन वैल्यू 'int x; मंद फू माइस्स्क्रीनवैल्यूज़ = x 'इंट & amp; Foo = x; '// c ++: foo अब एक्स के लिए एक संदर्भ तो यह 56 के लिए x सेट है' // .net: foo अब एक्स के लिए एक संदर्भ तो यह 56 foo.SpinControl1Value = 56 के लिए x.SpinControl1Value सेट है,   

क्या आप कर रहे हैं कोशिश कर रहा है संकेत पारित करने के लिए, तो करने के लिए, कहते हैं, एक उप करने के लिए अपने रूप के मूल्य पर हर नियंत्रण है, इसलिए की तरह:

  Button1_Click (... नई BusinessObject MyObject.DoSubmit (TextBox1.Text, SpinButton1.Value, CheckBox1.Checked)   

ByRef कीवर्ड आप superbDeveloper द्वारा प्रदान की विधि का उपयोग कर सकते हैं, और प्रयोग के रूप में मंद MyObject DoSubmit उप की परिभाषा पर:

  सार्वजनिक उप doSubmit (ByRef नाम स्ट्रिंग के रूप में, ByRef आयु के रूप में पूर्णांक, ByRef के रूप में कार्यरत बूलियन) ... व्यापार तर्क ...  < / पूर्व> 

हालांकि यह सिर्फ आपको 2-परत से जुदाई देता है। एमवीपी, एमवीसी, आदि में देखें- हालांकि संपूर्ण दृश्य मूल्यों को आंकड़े प्रस्तुत करने पर विचार करें। यह बहुत सारे अनुसंधान हैं जिनसे आप अब आपके पास क्या हो सकते हैं। उदाहरण के तौर पर आपका व्यावसायिक तर्क फॉर्म पर होने वाली घटनाओं को फ़ायर करेगा क्योंकि यह फॉर्म के मूल्यों में बदलाव करता है (ठीक है, वास्तव में, वे उप निकलते समय तक आग नहीं लगाते, जिस तरह से वीबी बीआरएफ गुणों [[temp variable] से संबंधित है, लेकिन यह विचार करने की आवश्यकता है)।

आप किसी ऑब्जेक्ट के गुणों को अन्य लाइब्रेरीज़ के साथ प्रपत्र के गुणों में भी मैप कर सकते हैं। वेब पर VALUE INJECTOR देखें यह एक वेबफ़ॉर्म / वाइनफोर्म और शायद एक WPF फ़ॉर्म भी ले सकता है और आपके द्वारा पूर्वनिर्धारित किसी ऑब्जेक्ट से और उसके नियंत्रण के मान को मैप कर सकता है। पूर्ण जुदाई के लिए उत्कृष्ट

Comments