日期:2009-04-14 浏览次数:20640 次
Module Module1 Sub Main() Dim I As Integer = 5 Dim J As Integer = 7 Swap(Of Integer)(I, J) Console.WriteLine("I = " & I) Console.WriteLine("J = " & J) Dim S As String = "Paul" Dim R As String = "Lori" Swap(Of String)(S, R) Console.WriteLine("S = " & S) Console.WriteLine("R = " & R) Console.ReadLine() End Sub Public Sub Swap(Of T)(ByRef a As T, ByRef b As T) Dim temp As T temp = a a = b b = temp End Sub End Module |
Public Sub Swap(Of T As Structure)(ByRef a As T, ByRef b As T) Dim temp As T temp = a a = b b = temp End Sub |
Sub Foo Sub Foo(ByVal s As String) Sub Foo(Of T)( ByVal arg As T) Sub Foo(Of T, U)(ByVal arg1 As T, ByVal arg2 as U) |
三、定义一个泛型类
泛型类与普通类一样定义在相同的实例中,只有一个区别。当你有一些数据和多于一个方法并且其间有关密切的关系时,你可以定义一个普通类。当方法和数据工作在一个密切的单元中并且该数据可以被进一步抽象,以至相同的代码可以支持许多数据类型时,你最好定义一个泛型类。例如,队列、列表和堆栈并不在乎它们存储的东西,而仅在乎怎样存储这些东西。如果你使用一个其中存储有对象的队列、堆栈或列表,那么你不得不在你的代码的很多地方进行繁琐的类型转化。如果你使用一个泛型队列、堆栈或列表,那么类型转化只是发生在该类内部。这就是说,繁琐的类型转化场所集中于该类的一个内部点上,而该类的用户可以依赖编译器来进行类型检查,并不要求用户执行if条件检查和类型变换。
定义一个泛型类就象定义多个泛型方法,只是多了一点:(Of T)构造也可以用于类的头部。为了说明问题,假定你已定义了一个派生于System.Collections.CollectionBase的泛型的强类型集合(见列表3)。那么现在,你可以把这个类使用于任何数据类型,就好象你已针对所有类型定义了一个定制的类型化的集合:
列表3:一个泛型的强类型集合
Module Module1 Sub Main() Dim BrokenBones As TypedCollection(Of OrthoInjury) = New TypedCollection(Of OrthoInjury) BrokenBones.Add(New OrthoInjury(True,"Broken Right Clavicle", "Vicodin; Heals n 8 to 12 weeks")) BrokenBones.Add(New OrthoInjury(True, "Fractured Posterior Rib #5", "Heals in 6 to 8 weeks")) BrokenBones.Add(New OrthoInjury(True, "Fr
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|