三个经典案例为你解疑VB.NET对象列表

开发 后端
文章主要介绍了通用VB.NET对象列表总结,有三个示例-即使用ForEach, FindAll,和Sort-来阐述对象列表的工作原理,希望对大家有帮助。

我们要如何使用List(of T)编程,我们需要了解如何部署.NET框架所提供的多种方法,在下面的文章中我们加以分析。我用三个示例演示——使用ForEach, FindAll,和Sort——来阐述同样列表类的工作原理。

VB.NET对象列表***步是要创建一个同用列表。你可以从多种途径获取数据,但是最简单的方法是添加。文本中,我们会编写代码以便为举例中的集来分类。因此,下面我们就来讲讲创建集的代码。首先,我需要一个能代表集中的Bottle的对象。为此而编写的代码是完全符合标准的,而且事实上,VB.NET 2008 Express Intellisense会为你写好大部分的代码。以下是我的对象:

  1. Public Class Bottle "internalProperties"Public Property Brand() As String  
  2. Public Property Name() As String  
  3. Public Property Category() As String  
  4. Public Property Size() As Decimal  
  5. Public Sub New( _  
  6. End Sub  
  7. End Class  

为了创建集,我需要添加项目:

  1. Dim Cabinet As List(Of Bottle) = _ "New List(Of Bottle)Cabinet.Add(New Bottle( _  
  2. "Castle Creek", _  
  3. "Uintah Blanc", _  
  4. "Wine", 750))  
  5. Cabinet.Add(New Bottle( _  
  6. "Zion Canyon Brewing Company", _  
  7. "Springdale Amber Ale", _  
  8. "Beer", 355))  
  9. Cabinet.Add(New Bottle( _  
  10. "Spanish Valley Vineyards", _  
  11. "Syrah", _  
  12. "Wine", 750))  
  13. Cabinet.Add(New Bottle( _  
  14. "Wasatch Beers", _  
  15. "Polygamy Porter", _  
  16. "Beer", 355))Cabinet.Add(New Bottle( _  
  17. "Squatters Beer", _  
  18. "Provo Girl Pilsner", _  
  19. "Beer", 355))  

所有的这些都是VB.NET1.0中的标准代码。但是,要通过定义我们自己的Bottle对象来注明。我们会在相同集中的多类型中获益。

下面我们将介绍VB.NET对象列表 ForEach, FindAll, 和Sort方法。我们使用这些方法的时候,就会发现其中的乐趣了。首先,让我们部署ForEach方法。微软文件包含了其使用句法定义。

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

微软进一步将委派行为定义为一种可以将对象传递的行为进行演示的一种方法。目前的List(T)要素是单独传送到Action(T)代表的。***件要做的事就是需要编写被委派方法的代码。对这一关键点存在误区是大部分人对于VB.NET感到困惑的原因。该项功能或子程序是所有用于Of类型对象的自定义编码所完成的场所。当我们能够正确使用这一功能时,过程就很简单。在我们的举例中,对它的使用很简单。Bottle的整个示例都被传送了,且子程序会从中抽选出任何需要的数据。

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

VB.NET对象列表编写ForEach方法,只需要填写代表的地址就可以了。

  1. Cabinet.ForEach(AddressOf displayBottle)  

FindAll稍微有些复杂。微软关于FindAll的说明如下:

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

现在,在我们的句法中出现了不同的要素,Predicate(T)。据微软称,这将代表定义了一套标准以及能确定指定对象是否符合这些标准的方法。换句话说,我们可以创建任何能在列表中找寻数据的代码。我编写的Predicate(Of T)可以对Beer种类进行搜寻:

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

FindAll返回的是整个List(T)而不是调用列表中每个项目的代表代码。这个List(T)只包含匹配Predicate(T)的数据。对第二个List(T)的定义和操作也取决于我们编写的代码。重复一遍,我的代码是为免冗繁而简化了。

  1. Dim sublist As List(Of Bottle) sublist = Cabinet.FindAll(AddressOf findBeer)For Each result As Bottle In sublist  
  2. Console.WriteLine(result.Brand & " - " & result.Name)  
  3. Next   


本文探讨的***一个方法是Sort。微软使用了一些你或许并不熟悉的术语对其进行解释。其实有四个不同的Sort方法负载:

  1. Sort()  
  2. Sort(Icomparer(T)  
  3. Sort(Comparison(T)4. Sort(Int32,Int32,Icomparer(T)   

这让我们能够用.NET框架中定义的Sort方法编写自己的代码或者只是通过使用起始位置和计数参数来收集集合的一部分。

在这个例子中,我为自己的比较器编写了另一个代表。由于我希望通过我的分类方式来分类,于是就只是抽去了传所送的Bottle对象中每个例子的值。

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


Sort方法实际上对原始List(T)进行了重新排列。所以这就是该执行该方法后发生的一个过程。

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

这些方法被选择用来阐述List(T)中编写框架方法代码的主要方式。你会发现它们使得List(T)更加有用。

【编辑推荐】

  1. 实例讲述VB.NET使用Log4Net
  2. 三分钟学会VB.NET转换形态
  3. VB.NET获取硬盘信息四大法宝
  4. 讲述VB.NET调用Excel的好处
  5. 简单例子概述VB.NET新窗体
责任编辑:田树 来源: 博客
相关推荐

2009-11-03 10:30:47

VB.NET继承

2009-10-26 16:12:19

VB.NET正则表达式

2009-10-27 09:59:17

VB.NET动态代码

2009-10-23 16:53:16

VB.NET语法规则

2009-11-10 12:12:57

VB.NET函数

2009-10-28 09:02:41

VB.NET开发正则表

2009-11-03 13:33:39

VB.NET对象列表

2009-11-12 15:55:31

ADO.NET对象服务

2009-10-23 17:40:24

VB.NET绘图方法

2009-10-28 16:10:16

VB.NET程序

2009-11-03 10:09:48

VB.NET对象

2009-04-30 16:21:37

VB.NET通用对象列表

2009-10-29 16:19:58

VB.NET文件操作

2009-10-27 15:42:04

VB.NET文件对象

2009-10-29 14:02:24

VB和VB.NET比较

2009-10-28 11:13:39

VB.NET虚拟框架

2009-11-10 14:30:33

VB.NET多窗体

2009-10-26 14:36:33

VB.NET数据自增

2009-10-14 13:21:46

VB.NET Acco

2009-10-09 15:59:41

VB.NET对象
点赞
收藏

51CTO技术栈公众号