科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在Visual Basic.NET 2005中使用泛型

在Visual Basic.NET 2005中使用泛型

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

泛型(Generics)是Visual Basic 2005中的一种新特性

作者:waterswea 来源:天极网 2007年11月9日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
使用泛型类

  使用上面的代码中的泛型类与使用任何其它的类只有稍微的差别。你仍然需要实例化这个类,并且你也可以使用方法、属性和事件,与使用其它类相似。列表2显示了使用列表1中定义的泛型类的典型示例:

  列表2.使用泛型类

Private Sub btnTest_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnTest.Click

 ' 建立新集合
 Dim CollectInt As New MyGenericCollection(Of String)

 ' 在集合上执行某些事务
 CollectInt.Add("One")
 CollectInt.Add("Two")
 CollectInt.Add("Three")
 CollectInt.RemoveAt(1)

 ' 显示一些统计信息
 MessageBox.Show("Number of Entries: " + CollectInt.Count.ToString())
 MessageBox.Show("Value of First Item: " + CollectInt(0))
End Sub

  btnTest_Click()方法从建立一个新集合开始。请注意实例化CollectInt对象的代码。与正常的方法不同,它需要开发者提供集合的数据类型。在示例中“(Of String)”条目指定这个集合将接收String(字符串)类型的值。

  CollectInt被实例化了之后,代码使用CollectInt的方法向集合添加值,并从集合中删除值。这与操作标准的类没有任何区别,因此通常你在操作基于泛型类的对象的时候,不必改变任何技术。

  在使用几个方法操作了第一个数据项(Two)之后,代码以显示集合中数据项的数量和第一个数据项结束。同样,在使用这个对象的时候你不需要做任何专门的工作。Count属性与你预想的工作方式相同。当你处理默认属性Item的时候,你会发现没有必要执行向String类型的转换(conversion)。其原因在于IDE和.NET框架组件都知道你建立的集合使用了String数据类型。此外,IntelliSense也知道它是String数据类型的,如图1所示。请注意,你接受的是特定的String类型的信息,而不是使用Object时接收的通用类型。


图1.使用泛型意味着从IntelliSense中得到特定数据类型的反馈

  约束泛型类

  当你看列表1的时候,你可能开始对泛型类有如此的作用感到惊讶,因为示例类可以接受任何的数据类型。幸运的是,你可以约束泛型类,使它仅仅接受一种特定的数据类型。例如,你可以建立如下所示的一个Address数据类型类:

Public Class Address
 Public Name As String
 Public Address1 As String
 Public Address2 As String
 Public City As String
 Public State As String
 Public ZIP As String
End Class

  你可以通过修改声明来约束泛型类,使它只能接受Address数据类型。例如,你可能希望改变列表1中的集合,如下所示:

Public Class MyGenericCollection(Of ItemType As Address)

  这个泛型类现在只能接受Address数据类型。任何其它的用法都会产生错误(IDE拒绝编译代码)。你可以把任何通用类型(包括接口)作为约束。例如,你可能希望定义一个泛型类,它只能接受实现IcustomFormatter接口的数据类型。

  为泛型类定义多个类型

  你不必仅仅使用一种数据类型定义每个类。幸运的是,泛型类也提供多个数据类型。你所需要做的是用逗号分开每种数据类型,如下所示:

Public Class MyGenericCollection(Of ItemType1, ItemType2, ItemType3)

  这个声明接受三个输入的数据类型(不能多,也不能少)。在例子中,代码在数据类型上没有做任何约束,但是你可以轻易地根据需要添加约束。实际上,你可以在同一个声明中带有和不带约束、混合和匹配数据类型,带有约束的数据类型不必拥有相同的约束类型。你可以包含一个使用特定类和另一个依赖于某种接口的数据类型。

  总结

  尽管泛型类起先看起来仅仅是前进的一步,但是它们实际上是.NET革命中的一个巨大飞跃。使用泛型把你从为每个数据类型建立新类中释放了出来,提高了性能,并减少了开发和调试的时间。为了体会Visual Studio 2005中最好的部分,你真的应该试着使用这个新特性——你会发现自己将很喜欢它的。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章