VB.NET List实用技巧详解
创始人
2024-06-20 17:41:07
0

VB.NET同所有编程语言一样具有一样的编程基础框架。这对于一个刚刚接触VB.NET语言而又有其他语言基础的开发人员来说,是非常有用的。因为只用花很少的时间就可以快速的掌握这一功能强大的语言。今天我们就来详细了解一下VB.NET List的相关知识。#t#

要使用VB.NET List,我们需要了解如何部署.NET框架所提供的多种方法。这也将是本文要介绍的内容。我已经编写好了三个示例——使用ForEach, FindAll,和Sort——来阐述同样列表类的工作原理。

***步是要创建一个同用列表。你可以从多种途径获取数据,但是最简单的方法是添加。文本中,我们会编写代码以便为举例中的集来分类。因此,下面我们就来讲讲创建集的代码。

首先,我需要一个能代表集中的Bottle的对象。为此而编写的代码是完全符合标准的,而且事实上,VB.NET 2008 Express Intellisense会为你写好大部分的代码。以下是我的对象:

 

  1. Public Class Bottle "internal
    Properties"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对象来注明。我们会在相同集中的多类型中获益。

下面我们将介绍ForEach, FindAll, 和Sort方法。

我们使用这些方法的时候,就会发现其中的乐趣了。首先,让我们部署ForEach方法。微软文件包含了其使用句法定义。

 

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

 

微软进一步将委派行为定义为一种可以将对象传递的行为进行演示的一种方法。目前的VB.NET List要素是单独传送到Action(T)代表的。

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

 

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

编写ForEach方法本身是很简单的,只需要填写代表的地址就可以了。

 

  1. Cabinet.ForEach
    (AddressOf displayBottle) 

 

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

 

  1. Dim instance As List 
    Dim match As Predicate(Of T)  
  2. Dim returnValue As List(Of T)  
  3. 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返回的是整个VB.NET List而不是调用列表中每个项目的代表代码。这个VB.NET List)只包含匹配Predicate(T)的数据。对第二个VB.NET List的定义和操作也取决于我们编写的代码。重复一遍,我的代码是为免冗繁而简化了。

  1. Dim sublist As List(Of Bottle)   
  2. sublist = Cabinet.FindAll
    (AddressOf findBeer)  
  3. For Each result As Bottle   
  4. In sublist  
  5. Console.WriteLine(result.
    Brand & " - " & result.Name)  
  6. 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) 
    As IntegerReturn  
  2. x.Category.CompareTo
    (y.Category)  
  3. End Function  

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

 

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

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

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...