溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

VB.NET對(duì)象列表的用法示例

發(fā)布時(shí)間:2021-12-02 14:40:15 來(lái)源:億速云 閱讀:233 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了VB.NET對(duì)象列表的用法示例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

VB.NET對(duì)象列表***步是要?jiǎng)?chuàng)建一個(gè)同用列表。你可以從多種途徑獲取數(shù)據(jù),但是最簡(jiǎn)單的方法是添加。文本中,我們會(huì)編寫(xiě)代碼以便為舉例中的集來(lái)分類。因此,下面我們就來(lái)講講創(chuàng)建集的代碼。首先,我需要一個(gè)能代表集中的Bottle的對(duì)象。為此而編寫(xiě)的代碼是完全符合標(biāo)準(zhǔn)的,而且事實(shí)上,VB.NET 2008 Express Intellisense會(huì)為你寫(xiě)好大部分的代碼。以下是我的對(duì)象:

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

為了創(chuàng)建集,我需要添加項(xiàng)目:

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中的標(biāo)準(zhǔn)代碼。但是,要通過(guò)定義我們自己的Bottle對(duì)象來(lái)注明。我們會(huì)在相同集中的多類型中獲益。

下面我們將介紹VB.NET對(duì)象列表 ForEach, FindAll, 和Sort方法。我們使用這些方法的時(shí)候,就會(huì)發(fā)現(xiàn)其中的樂(lè)趣了。首先,讓我們部署ForEach方法。微軟文件包含了其使用句法定義。

Dim instance As List Dim action As Action(Of T)instance.ForEach(action)

微軟進(jìn)一步將委派行為定義為一種可以將對(duì)象傳遞的行為進(jìn)行演示的一種方法。目前的List(T)要素是單獨(dú)傳送到Action(T)代表的。***件要做的事就是需要編寫(xiě)被委派方法的代碼。對(duì)這一關(guān)鍵點(diǎn)存在誤區(qū)是大部分人對(duì)于VB.NET感到困惑的原因。該項(xiàng)功能或子程序是所有用于Of類型對(duì)象的自定義編碼所完成的場(chǎng)所。當(dāng)我們能夠正確使用這一功能時(shí),過(guò)程就很簡(jiǎn)單。在我們的舉例中,對(duì)它的使用很簡(jiǎn)單。Bottle的整個(gè)示例都被傳送了,且子程序會(huì)從中抽選出任何需要的數(shù)據(jù)。

Sub displayBottle(ByVal b As Bottle) Console.WriteLine(b.Brand & " - " & b.Name)End Sub

VB.NET對(duì)象列表編寫(xiě)ForEach方法,只需要填寫(xiě)代表的地址就可以了。

Cabinet.ForEach(AddressOf displayBottle)

FindAll稍微有些復(fù)雜。微軟關(guān)于FindAll的說(shuō)明如下:

Dim instance As List Dim match As Predicate(Of T)Dim returnValue As List(Of T)  returnValue = instance.FindAll(match)

現(xiàn)在,在我們的句法中出現(xiàn)了不同的要素,Predicate(T)。據(jù)微軟稱,這將代表定義了一套標(biāo)準(zhǔn)以及能確定指定對(duì)象是否符合這些標(biāo)準(zhǔn)的方法。換句話說(shuō),我們可以創(chuàng)建任何能在列表中找尋數(shù)據(jù)的代碼。我編寫(xiě)的Predicate(Of T)可以對(duì)Beer種類進(jìn)行搜尋:

Function findBeer(ByVal b As Bottle) _ As BooleanIf (b.Category = "Beer") Then  Return True  Else  Return FalseEnd IfEnd Function

FindAll返回的是整個(gè)List(T)而不是調(diào)用列表中每個(gè)項(xiàng)目的代表代碼。這個(gè)List(T)只包含匹配Predicate(T)的數(shù)據(jù)。對(duì)第二個(gè)List(T)的定義和操作也取決于我們編寫(xiě)的代碼。重復(fù)一遍,我的代碼是為免冗繁而簡(jiǎn)化了。

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


本文探討的***一個(gè)方法是Sort。微軟使用了一些你或許并不熟悉的術(shù)語(yǔ)對(duì)其進(jìn)行解釋。其實(shí)有四個(gè)不同的Sort方法負(fù)載:

Sort()  Sort(Icomparer(T)  Sort(Comparison(T)4. Sort(Int32,Int32,Icomparer(T)

這讓我們能夠用.NET框架中定義的Sort方法編寫(xiě)自己的代碼或者只是通過(guò)使用起始位置和計(jì)數(shù)參數(shù)來(lái)收集集合的一部分。

在這個(gè)例子中,我為自己的比較器編寫(xiě)了另一個(gè)代表。由于我希望通過(guò)我的分類方式來(lái)分類,于是就只是抽去了傳所送的Bottle對(duì)象中每個(gè)例子的值。

Private Shared Function sortCabinet( _ ByVal x As Bottle, ByVal y As Bottle)   As IntegerReturn x.Category.CompareTo(y.Category)  End Function


Sort方法實(shí)際上對(duì)原始List(T)進(jìn)行了重新排列。所以這就是該執(zhí)行該方法后發(fā)生的一個(gè)過(guò)程。

Cabinet.Sort(AddressOf sortCabinet) For   Each result As Bottle In CabinetConsole.WriteLine(result.Brand & " - " & result.Name)  Next

這些方法被選擇用來(lái)闡述List(T)中編寫(xiě)框架方法代碼的主要方式。你會(huì)發(fā)現(xiàn)它們使得List(T)更加有用。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“VB.NET對(duì)象列表的用法示例”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI