2009-02-04 14 views
6

यह एक बेवकूफ सवाल हो सकता है - लेकिन VB.net में प्रकारों और उदाहरणों पर साझा विधियां क्यों उपलब्ध नहीं हैं - क्या मुझे लगता है कि वे सी # स्थिर तरीकों के बराबर हैं?वीबीनेट साझा बनाम सी # स्टेटिक एक्सेसिबिलिटी मतभेद, क्यों?

यानी

MyClass.MySharedMethod() 

dim mc as new MyClass() 
mc.MySharedMethod() 

क्यों मैं ऐसा करने की अनुमति हूँ? इसके लिए क्या संभव लाभ है - मैं यह देख सकता हूं कि यह इंटेलिजेंस का उपयोग करते समय लोगों को भ्रमित कर रहा है। मुझे यकीन है कि इसे क्लासिक वीबी 6 से कुछ सम्मेलन के साथ करना है, इसे परेशान क्यों करें .NET - इसे बस इतना टूटा हुआ लगता है।

उत्तर

17

हां, यह मूल रूप से वीबी 6 से हैंगओवर है। जावा आपको यह भी करने देता है, लेकिन अधिकांश आईडीई आपको इन दिनों चेतावनी देते हैं।

और हाँ, यह वास्तव में एक बुरा विचार है। खराब होने का सबसे स्पष्ट उदाहरण थ्रेड है। सो जाओ:

Dim t as new Thread(...) 
t.Sleep(1000) 

कौन सा धागा सो रहा है? वर्तमान एक। रवींद्र!

+1

ठीक है, कक्षाओं में वीबी 6 के पास कोई साझा सब/फ़ंक्शन नहीं था। यह एक हैंगओवर कैसे हो सकता है? –

+1

उदाहरण को प्यार करें – JaredPar

+0

@ कोनराड: ओह, दिलचस्प। मैंने सुना (कुछ समय पहले) कि यह एक पिछली संगतता चीज थी। अजीब अगर यह नहीं है ... –

2

यह एक बेवकूफ सवाल हो सकता है - लेकिन वीबीनेट में प्रकार और उदाहरणों पर साझा विधियां क्यों उपलब्ध नहीं हैं - क्या मुझे लगता है कि वे सी # स्थिर तरीकों के बराबर हैं?

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

जहां तक ​​मुझे पता है, यह सी # (प्रतिबिंब का उपयोग किए बिना) में संभव नहीं होगा। Option Strict Off के साथ वीबी में, आप इसे ऑब्जेक्ट की एक इंस्टेंस विधि के रूप में बस कॉल कर सकते हैं।

+1

ठीक है तो यह क्यों मना नहीं किया जाता है - अगर वे आपको चेतावनी देते हैं तो उन्हें एक बुरा विचार पता है - तो परेशान क्यों? – dfasdljkhfaskldjhfasklhf

+0

+1 [पुष्टि] (http://ideone.com/Nuag3y) –

+0

@ kingfrito_5005 'स्टेटिक' कीवर्ड वीबी में मौजूद है लेकिन कुछ पूरी तरह से अलग है (यह स्थानीय चर के जीवनकाल को नियंत्रित करता है, कुछ ऐसा जो सी # समर्थन नहीं करता है)। ओपी ने पूछा ('स्थैतिक' विधियों) के लिए, वीबी में 'साझा' सी # में' स्थिर 'के बराबर है। –

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