VB.NET中有用的通用對象列表。本站提示廣大學習愛好者:(VB.NET中有用的通用對象列表)文章只能為提供參考,不一定能成為您想要的結果。以下是VB.NET中有用的通用對象列表正文
要運用List(of T),我們需求理解如何部署.NET框架所提供的多種辦法。這也將是本文要引見的內容 。我曾經編寫好了三個示例——運用ForEach, FindAll,和Sort——來論述異樣列表類的任務原理。
第一步是要創立一個同用列表。你可以從多種途徑獲取數據,但是最復雜的方 法是添加。文本中,我們會編寫代碼以便為舉例中的集來分類。因而,上面我們就來講講創立集的代碼 。
首先,我需求一個能代表集中的Bottle的對象。為此而編寫的代碼是完全契合規范的,而且事 實上,VB.NET 2008 Express Intellisense會為你寫好大局部的代碼。以下是我的對象:
Public Class Bottle
"internalProperties"
Public Property Brand() As String
Public Property Name() As String
Public Property Category() As String
Public Property Size() As Decimal
Public Sub New( _
End Sub
End Class
為了創立集,我需求添加項目:
Dim Cabinet As List(Of Bottle) = _
"New List(Of Bottle)
Cabinet.Add(New Bottle( _
"Castle Creek", _
"Uintah Blanc", _
"Wine", 750))
Cabinet.Add(New Bottle( _
"Zion Canyon Brewing Company", _
"Springdale Amber Ale", _
"Beer", 355))
Cabinet.Add(New Bottle( _
"Spanish Valley Vineyards", _
"Syrah", _
"Wine", 750))
Cabinet.Add(New Bottle( _
"Wasatch Beers", _
"Polygamy Porter", _
"Beer", 355))
Cabinet.Add(New Bottle( _
"Squatters Beer", _
"Provo Girl Pilsner", _
"Beer", 355))
一切的這些都是VB.NET1.0中的規范代碼。但是,要經過定 義我們自己的Bottle對象來注明。我們會在相反集中的多類型中獲益。
上面我們將引見ForEach, FindAll, 和Sort辦法。
我們運用這些辦法的時分,就會發現其中的樂趣了。首先,讓我們部署 ForEach辦法。微軟文件包括了其運用句法定義。
Dim instance As List
Dim action As Action(Of T)
instance.ForEach(action)
微軟進一 步將委派行為定義為一種可以將對象傳遞的行為停止演示的一種辦法。目前的List(T)要素是獨自傳送到 Action(T)代表的。
第一件要做的事就是需求編寫被委派辦法的代碼。對這一關鍵點存在誤區是 大局部人關於VB.NET感到困惑的緣由。該項功用或子順序是一切用於Of類型對象的自定義編碼所完成的 場所。當我們可以正確運用這一功用時,進程就很復雜。在我們的舉例中,對它的運用很復雜。Bottle 的整個示例都被傳送了,且子順序會從中抽選出任何需求的數據。
Sub displayBottle (ByVal b As Bottle)
Console.WriteLine(b.Brand & " - " & b.Name)
End Sub
編寫ForEach辦法自身是很復雜的,只需求填寫代表的地 址就可以了。
Cabinet.ForEach(AddressOf displayBottle)
FindAll略微 有些復雜。微軟關於FindAll的闡明如下:
Dim instance As List
Dim match As Predicate(Of T)
Dim returnValue As List(Of T)
returnValue = instance.FindAll(match)
如今,在我們的句法中呈現了不同的要素 ,Predicate(T)。據微軟稱,這將代表定義了一套規范以及能確定指定對象能否契合這些規范的辦法。 換句話說,我們可以創立任何能在列表中找尋數據的代碼。我編寫的Predicate(Of T)可以對Beer品種進 行搜索:
Function findBeer(ByVal b As Bottle) _
As Boolean
If (b.Category = "Beer") Then
Return True
Else
Return False
End If
End Function
FindAll前往的是整個List(T)而不是調用列表中每個項目的代表代碼。這個 List(T)只包括婚配Predicate(T)的數據。對第二個List(T)的定義和操作也取決於我們編寫的代碼。重 復一遍,我的代碼是為免冗繁而簡化了。
Dim sublist As List(Of Bottle)
sublist = Cabinet.FindAll(AddressOf findBeer)
For Each result As Bottle In sublist
Console.WriteLine(result.Brand & " - " & result.Name)
Next
本文討論的最後一個辦法是Sort。微軟運用了一 些你或許並不熟習的術語對其停止解釋。其實有四個不同的Sort辦法負載:
1. Sort()
2. Sort(Icomparer(T)
3. Sort(Comparison(T)
4. Sort (Int32,Int32,Icomparer(T)
這讓我們可以用.NET框架中定義的Sort辦法編寫自己的代碼 或許只是經過運用起始地位和計數參數來搜集集合的一局部。
在這個例子中,我為自己的比擬器 編寫了另一個代表。由於我希望經過我的分類方式來分類,於是就只是抽去了傳所送的Bottle對象中每 個例子的值。
Private Shared Function sortCabinet( _
ByVal x As Bottle, ByVal y As Bottle) As Integer
Return x.Category.CompareTo (y.Category)
End Function
Sort辦法實踐上對原始List(T)停止了重新排 列。所以這就是該執行該辦法後發作的一個進程。
Cabinet.Sort(AddressOf sortCabinet)
For Each result As Bottle In Cabinet
Console.WriteLine(result.Brand & " - " & result.Name)
Next
這些辦法被選擇用來論述List(T)中編寫框架辦法代碼的次要方式。你會發現它們 使得List(T)愈加有用。