您好,登錄后才能下訂單哦!
小編給大家分享一下為什么VB.NET模塊在C#等語言中是沒有的,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
首先,這是一個歷史原因。早先的VB語言都有模塊和類模塊的概念。所謂模塊一般就是存放公用的一些方法(Sub)或者函數(Function),而類模塊,相當于就是我們經常所說的類的概念。下面這個圖是我從Excel的VBA中截取的,VB6里面也是這樣類似的設計
其次,VB.NET模塊還有一些新的東西。
VB.NET模塊里面可以直接有方法,這些方法自動就是靜態的(或者稱為共享的——VB.NET中的關鍵字是Shared),這些方法可以直接調用,所以Module是無法實例化,也沒有必要實例化的
模塊無法繼承,也無法實現接口
模塊里面可以有類,但其實這個類并不需要真的通過模塊作為前綴來引用。所以模塊有點虛的概念
模塊可以被組織到命名空間中去,因為模塊其實是個虛的,所以它的方法也可以直接外層的命名空間調用。
下面有個例子。注意,這里的代碼只是演示目的而寫的,沒有任何具體意義 。
'''可以用命名空間封裝,這是比較好的做法
Namespace Xizhang
''' < summary>
''' 模塊無法繼承,無法實現接口
''' < /summary>
''' < remarks>< /remarks>
Module Module1
''' < summary>
''' 模塊里面的方法都是靜態的,
無需實例化,也無從實例化''' < /summary>
''' < remarks>< /remarks>
Sub Main()
Dim c As New class1
c.Name = "chenxizhang"
Console.WriteLine(c.Name)
Console.WriteLine(c.GetClassName())
Console.Read()
End Sub
''' < summary>
''' 類型可以放在模塊里面,但主要的現實意義在于
分類存放而已,放在模塊里面并不影響該類型對外的引用。
例如我們并不一定需要用Xizhang.Module1.Class1,
而是直接通過Xizhang.Class1就可以對其進行引用''' < /summary>
''' < remarks>< /remarks>
Public Class class1 : Implements IComparable
''' < summary>
''' 類型可以繼承一個基類,可以實現一個或者多個接口
''' < /summary>
''' < remarks>< /remarks>
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Function GetClassName() As String
Return Me.GetType().ToString()
End Function
Public Function CompareTo(ByVal obj As
Object) As Integer Implements System.
IComparable.CompareToReturn 1
End Function
End Class
End Module
End Namespace
以上是“為什么VB.NET模塊在C#等語言中是沒有的”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。