輕松運用VB.NET重載新特性
在許多的語言中都支持重載這個概念,在網上收集了一些資料,在這里和大家一起來談談吧。VB.NET重載方法是另外一個新特性。VB.NET重載的意思是我們可以在一個類中多次聲明相同名字的方法只要每一次的聲明都有不同的參數列表。
不同的參數列表意味著在列表中不同類型的數據類型。現在讓我們先看看以下的方法聲明:
- Public Sub MyMethod(X As Integer, Y As Integer)
#T#這種方法的參數列表可以看成(integer,integer)。為了重載這種方法,我們必須使用不同的參數列表,例如(integer,double)。當然你還可以改變一下數據類型的順序,比如(integer,double)和(double,integer)是不同的,這兩種也是重載。重載不能只是通過改變函數的返回類型來實現,而是要求參數的數據類型不同。
作為一個例子,假如我們想提供一個搜索的功能并且根據一些條件返回一組數據,具體代碼應該為:
- Public Function MyFindData(ByVal Name As String) As ArrayList
- (搜索數據并且返回結果)
- End Function
在VB 6中,如果我們想基于一些條件增加一個新的搜索選項,就必須增加一個不同名字的函數,也就是說VB 6還沒有具備重載的能力。但是現在在VB.NET中,我們可以簡單地重載已經存在的函數,這一點和Visual C++很是相似。
- Public Overloads Function FindData(ByVal Name As String) As ArrayList
- (搜索數據并且返回結果)
- End Function
- Public Overloads Function FindData(ByVal Age As Integer) As ArrayList
- (搜索數據并且返回結果)
- End Function
仔細觀察可以發現兩種方法的聲明都是有相同的方法名字。這一點在VB 6中就不行的,它要求每一個方法名字都不一樣。但是,在VB.NET重載中就允許存在相同名字的方法,但其參數要求是不同的。值得一提的是,每一個聲明都要加入Overloads關鍵字。
當重載一個方法的時候,我們可以使用Public、Friend等等的轄域關鍵字讓它有不同的作用域,具體做法只要使用不同的參數列表即可。這就意味著我們可以改變MyFindData方法,使它有不同的作用域:
- Public Overloads Function FindData(ByVal Name As String) As ArrayList
- (搜索數據并且返回結果)
- End Function
- Friend Overloads Function FindData(ByVal Age As Integer) As ArrayList
- (搜索數據并且返回結果)
- End Function
有了這個改變,在VB.NET工程中其它代碼可以使用MyFindData。MyFindData只需要接收一個整型數據作為參數即可。