2011-07-19 31 views
9

वीबीएनईटी में out पैरामीटर नहीं हैं, लेकिन आप बाहरी विधियों के लिए समान प्रभाव प्राप्त करने के लिए COM और P/Invoke विधियों पर <Out()> ByRef निर्दिष्ट कर सकते हैं।वर्तमान में ByRef आंतरिक विधियों पर आउटएट्रिब्यूट निर्दिष्ट करना कुछ भी करता है?

आंतरिक तरीकों (यानी केवल .NET कोड द्वारा बुलाए जाने वाले तरीकों) को निर्दिष्ट करना क्या वास्तव में जिटर (या वीबी.नेट कंपाइलर) की मदद करता है? या यह वर्तमान में केवल प्रोग्रामर नोट के रूप में उपयोगी है।

क्या यह संभव है कि भविष्य में जिटर में इसका उपयोग किया जा सके, या संकलन करते समय यह विशेषता खो गई है?

उत्तर

9

मैंने पुष्टि की है कि एक वीबीएनईटी <Out()> सी # क्लाइंट को out तर्कों की आवश्यकता होती है, इसलिए यह प्रभावी रूप से समान प्रतीत होता है।

इसके अलावा एक सी # क्लाइंट विधि में वर्तमान मूल्यों के साथ अपने तर्कों में गुजरता है, लेकिन यह आश्चर्य की बात नहीं है क्योंकि, COM या P/Invoke मामलों के विपरीत, करने के लिए कोई मार्शलिंग नहीं है। (और सी # एक संपत्ति सीधे एक out तर्क को सेट करने की है, इसलिए अगर सी # पिछले एक अनावश्यक काम दूर अनुकूलन देखने के लिए एक तरीका हो प्रतीत नहीं होता अनुमति नहीं दी जाएगी।)

तो यह जवाब लगता है क्या यह संभावित भविष्य में मदद करता है सी # क्लाइंट कोड का उपयोग करते हैं, और यदि जिटर कभी सी # समकक्ष समायोजित करता है, तो यह वही करेगा। यद्यपि वीबी जैसी भाषाएं मौजूद हैं, इसलिए यह अधिक नहीं कर सकती क्योंकि वे Out attribute का सम्मान नहीं करते हैं।

+1

हां, यह * बिल्कुल * वही है। सी # 'आउट' कीवर्ड आईएल कोड में संकलित है जिसमें '' विशेषता है। वीबी.नेट में सिर्फ कीवर्ड नहीं है। आप दो परीक्षण परियोजनाओं को संकलित करके और तुलना करने के लिए ILdasm का उपयोग करके अपने लिए यह सत्यापित कर सकते हैं। –

+0

मुझे लगता है कि यह नामस्थान सिस्टम में आउट विशेषता को संदर्भित करता है। रनटाइम.इंटरोप सर्विसेज। क्या यह मामला है? – jswolf19

+0

@ jswolf19 हां, संशोधित, लिंक किए गए प्रश्नों में मेरे उत्तरों में भी संशोधित। –

1

मैंने वीबी कक्षा के साथ MembershipProvider उप-वर्गीकृत किया, हम इसे ए कहते हैं, और फिर ए को सी # कक्षा के साथ उप-वर्गीकृत किया जाएगा, हम बी को कॉल करेंगे। सी # कोड, बी, इस तथ्य को पहचान नहीं रहा था कि इसमें सार तत्व MembershipProvider पहले से ही वीबी सबक्लास, ए में लागू किया गया था, जब तक मैंने outMembershipProvider बेस क्लास सार विधियों में निर्दिष्ट पैरामीटर के लिए वीबी कक्षा में OutAttribute लागू किया था। इसका सिर्फ COM या P/Invoke से परे प्रभाव पड़ता है।