溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

為什么VB.NET模塊在C#等語(yǔ)言中是沒(méi)有的

發(fā)布時(shí)間:2021-12-02 14:02:29 來(lái)源:億速云 閱讀:233 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下為什么VB.NET模塊在C#等語(yǔ)言中是沒(méi)有的,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

首先,這是一個(gè)歷史原因。早先的VB語(yǔ)言都有模塊和類模塊的概念。所謂模塊一般就是存放公用的一些方法(Sub)或者函數(shù)(Function),而類模塊,相當(dāng)于就是我們經(jīng)常所說(shuō)的類的概念。下面這個(gè)圖是我從Excel的VBA中截取的,VB6里面也是這樣類似的設(shè)計(jì)

其次,VB.NET模塊還有一些新的東西。

VB.NET模塊里面可以直接有方法,這些方法自動(dòng)就是靜態(tài)的(或者稱為共享的——VB.NET中的關(guān)鍵字是Shared),這些方法可以直接調(diào)用,所以Module是無(wú)法實(shí)例化,也沒(méi)有必要實(shí)例化的

模塊無(wú)法繼承,也無(wú)法實(shí)現(xiàn)接口

模塊里面可以有類,但其實(shí)這個(gè)類并不需要真的通過(guò)模塊作為前綴來(lái)引用。所以模塊有點(diǎn)虛的概念

模塊可以被組織到命名空間中去,因?yàn)槟K其實(shí)是個(gè)虛的,所以它的方法也可以直接外層的命名空間調(diào)用。

下面有個(gè)例子。注意,這里的代碼只是演示目的而寫(xiě)的,沒(méi)有任何具體意義 。

  1. '''可以用命名空間封裝,這是比較好的做法  

  2. Namespace Xizhang  

  3. ''' < summary> 

  4. ''' 模塊無(wú)法繼承,無(wú)法實(shí)現(xiàn)接口  

  5. ''' < /summary> 

  6. ''' < remarks>< /remarks> 

  7. Module Module1  

  8. ''' < summary> 

  9. ''' 模塊里面的方法都是靜態(tài)的,
    無(wú)需實(shí)例化,也無(wú)從實(shí)例化  

  10. ''' < /summary> 

  11. ''' < remarks>< /remarks> 

  12. Sub Main()  

  13. Dim c As New class1  

  14. c.Name = "chenxizhang" 

  15. Console.WriteLine(c.Name)  

  16. Console.WriteLine(c.GetClassName())  

  17. Console.Read()  

  18. End Sub 

  1. ''' < summary> 

  2. ''' 類型可以放在模塊里面,但主要的現(xiàn)實(shí)意義在于
    分類存放而已,放在模塊里面并不影響該類型對(duì)外的引用。
    例如我們并不一定需要用Xizhang.Module1.Class1,
    而是直接通過(guò)Xizhang.Class1就可以對(duì)其進(jìn)行引用  

  3. ''' < /summary> 

  4. ''' < remarks>< /remarks> 

  5. Public Class class1 : Implements IComparable  

  6. ''' < summary> 

  7. ''' 類型可以繼承一個(gè)基類,可以實(shí)現(xiàn)一個(gè)或者多個(gè)接口  

  8. ''' < /summary> 

  9. ''' < remarks>< /remarks> 

  10. Private _name As String  

  11. Public Property Name() As String  

  12. Get  

  13. Return _name  

  14. End Get  

  15. Set(ByVal value As String)  

  16. _name = value 

  17. End Set  

  18. End Property  

  19. Public Function GetClassName() As String  

  20. Return Me.GetType().ToString()  

  21. End Function  

  22. Public Function CompareTo(ByVal obj As 
    Object) As Integer Implements System.
    IComparable.CompareTo  

  23. Return 1  

  24. End Function  

  25. End Class  

  26. End Module  

  27. End Namespace 

以上是“為什么VB.NET模塊在C#等語(yǔ)言中是沒(méi)有的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI