VB.NET模塊與眾不同之處
VB.NET的應用為開發人員帶來了很大的幫助。大家可以通過這款編程語言實現許多特定的功能需求。而且其中還有很多特定的功能特點供我們使用。雖然很久不用VB.NET,但偶爾也會被問到這方面的問題。其中一個典型的問題就是:為什么VB.NET模塊這樣一個東西在C#等語言中是沒有的。#t#
首先,這是一個歷史原因。早先的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.CompareTo- Return 1
- End Function
- End Class
- End Module
- End Namespace
VB.NET模塊的相關概念就為大家介紹到這里啦。