2008-09-25 12 views
63

में एक क्लास स्टेटिक चिह्नित करना हाल ही में हाल ही में question और answer में बताया गया है, तो आप एक स्थिर वर्ग से प्राप्त नहीं कर सकते हैं। VB.NET के अंदर स्थिर कक्षाओं के साथ चलने वाले नियमों को कैसे लागू किया जाता है? चूंकि ढांचा सी # और वीबी के बीच संगत है, इसलिए यह समझ में आता है कि क्लास स्थैतिक को चिह्नित करने का एक तरीका होगा, लेकिन ऐसा कोई प्रतीत नहीं होता है।वीबीएनईटी

उत्तर

93

मॉड्यूल == स्थिर वर्ग

तुम सिर्फ एक वर्ग है कि आप के वारिस नहीं कर सकते हैं, एक NotInheritable वर्ग का उपयोग करें। लेकिन यह स्थिर/साझा नहीं होगा। आप सभी विधियों, गुणों और सदस्यों को साझा के रूप में चिह्नित कर सकते हैं, लेकिन यह कड़ाई से सी # में स्थिर वर्ग के समान नहीं है क्योंकि यह संकलक द्वारा लागू नहीं किया गया है।

यदि आप वास्तव में एक सी # स्थिर वर्ग के बराबर vb.net चाहते हैं, तो मॉड्यूल का उपयोग करें। इसे विरासत में नहीं लिया जा सकता है और सभी सदस्य, गुण, और विधियां स्थिर/साझा की जाती हैं।

+1

हाँ एक मॉड्यूल एक स्थिर वर्ग है। बस विस्तार विधियों पर पढ़ें और एमएस आपको एक ही बात बताएगा। – chrissie1

+0

दिलचस्प। मैंने वीबी में एक्सटेंशन के साथ नहीं खेला है। – MagicKat

+2

मैं अपनी पिछली टिप्पणी वापस लेता हूं। मैं परावर्तक में एक मॉड्यूल देख रहा था और आईएल इसे सीलबंद के रूप में दिखाता है। – MagicKat

-1

मुझे लगता है कि वीबीएनईटी static के समतुल्य Shared है।

+9

हाँ ... लेकिन, आप साझा कक्षा को चिह्नित नहीं कर सकते हैं। – MagicKat

+1

आप इसे 'NotInheritable' चिह्नित करते हैं और इसके सभी सदस्यों को साझा के रूप में घोषित करते हैं; आपको इसे सी # में भी करना होगा। – Shimmy

5

यदि आप सिर्फ एक कक्षा बनाना चाहते हैं जिसे आप प्राप्त नहीं कर सकते हैं, तो सी # में आप सीलबंद का उपयोग कर सकते हैं, और वीबी.Net में NotInheritable का उपयोग कर सकते हैं।

स्थिर के वीबी.Net समकक्ष साझा किया जाता है।

+7

आप एक वर्ग को साझा के रूप में चिह्नित नहीं कर सकते हैं। –

+0

आप इसे साझा किए गए चर और कार्यक्षमताओं को चिह्नित करते हैं, जैसे कि आपको सी # स्थिर वर्ग में करना होगा। NotInheritable के रूप में चिह्नित करना इसे सील कर देता है। – Shimmy

1

सीएलआर बिंदु से, सी # स्थिर वर्ग सिर्फ "मुहरबंद" और "अमूर्त" वर्ग है। आप एक उदाहरण नहीं बना सकते हैं, क्योंकि यह सार है, और इसे सील कर दिए जाने से आप इसका वारिस नहीं कर सकते हैं। बाकी बस कुछ कंपाइलर जादू है।

2

आप vb.net में स्थिर वर्ग बना सकते हैं। समाधान,

Friend NotInheritable Class DB 
    Public Shared AGE As Integer = 20 
End Class 

उम्र चर सार्वजनिक स्थिर है आप सिर्फ इस

Dim myage As Integer = DB.AGE 

मित्र = सार्वजनिक, NotInheritable = स्थिर

+0

मित्र! = सार्वजनिक, मित्र = आंतरिक – Altair

30

लगभग हो गया है जैसे अन्य कोड में इसका इस्तेमाल कर सकते हैं। आपको भी तत्काल रोकना होगा।

NotInheritable Class MyStaticClass 

    ''' <summary> 
    ''' Prevent instantiation. 
    ''' </summary> 
    Private Sub New() 

    End Sub 

    Public Shared Function MyMethod() As String 

    End Sub 

End Class 
  • साझा स्थिर वर्ग की विधि की तरह है।
  • NotInheritable मुहरबंद की तरह है।
  • निजी नया स्थिर वर्ग की तरह है तत्काल नहीं किया जा सकता है।

देखें ... MSDN - Static Classes and Static Class Members

+1

+1 वास्तविक कोड नमूने के लिए +1 –