VB.NET模塊與眾不同之處
VB.NET的應(yīng)用為開發(fā)人員帶來了很大的幫助。大家可以通過這款編程語言實(shí)現(xiàn)許多特定的功能需求。而且其中還有很多特定的功能特點(diǎn)供我們使用。雖然很久不用VB.NET,但偶爾也會被問到這方面的問題。其中一個(gè)典型的問題就是:為什么VB.NET模塊這樣一個(gè)東西在C#等語言中是沒有的。#t#
首先,這是一個(gè)歷史原因。早先的VB語言都有模塊和類模塊的概念。所謂模塊一般就是存放公用的一些方法(Sub)或者函數(shù)(Function),而類模塊,相當(dāng)于就是我們經(jīng)常所說的類的概念。下面這個(gè)圖是我從Excel的VBA中截取的,VB6里面也是這樣類似的設(shè)計(jì)
其次,VB.NET模塊還有一些新的東西。
VB.NET模塊里面可以直接有方法,這些方法自動就是靜態(tài)的(或者稱為共享的——VB.NET中的關(guān)鍵字是Shared),這些方法可以直接調(diào)用,所以Module是無法實(shí)例化,也沒有必要實(shí)例化的
模塊無法繼承,也無法實(shí)現(xiàn)接口
模塊里面可以有類,但其實(shí)這個(gè)類并不需要真的通過模塊作為前綴來引用。所以模塊有點(diǎn)虛的概念
模塊可以被組織到命名空間中去,因?yàn)槟K其實(shí)是個(gè)虛的,所以它的方法也可以直接外層的命名空間調(diào)用。
下面有個(gè)例子。注意,這里的代碼只是演示目的而寫的,沒有任何具體意義 。
- '''可以用命名空間封裝,這是比較好的做法
- Namespace Xizhang
- ''' < summary>
- ''' 模塊無法繼承,無法實(shí)現(xiàn)接口
- ''' < /summary>
- ''' < remarks>< /remarks>
- Module Module1
- ''' < summary>
- ''' 模塊里面的方法都是靜態(tài)的,
無需實(shí)例化,也無從實(shí)例化- ''' < /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>
- ''' 類型可以放在模塊里面,但主要的現(xiàn)實(shí)意義在于
分類存放而已,放在模塊里面并不影響該類型對外的引用。
例如我們并不一定需要用Xizhang.Module1.Class1,
而是直接通過Xizhang.Class1就可以對其進(jìn)行引用- ''' < /summary>
- ''' < remarks>< /remarks>
- Public Class class1 : Implements IComparable
- ''' < summary>
- ''' 類型可以繼承一個(gè)基類,可以實(shí)現(xiàn)一個(gè)或者多個(gè)接口
- ''' < /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模塊的相關(guān)概念就為大家介紹到這里啦。