控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

VB.NET中有用的通用对象列表

作者:佚名 出处:互联网 2010年04月13日 阅读:

    控件中国网提示:本文介绍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 BooleanIf (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 IntegerReturn x.Category.CompareTo(y.Category)
  End Function


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


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


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

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统