前面通过例子介绍了如何使用类型参数(例如T或V)来声明方法。这些泛型方法的例子都是在泛型类型(比如类、结构、接口)中实现的。
在普通类、结构、接口和模块中也可以创建泛型方法。这时,类型参数不是在类、结构或者接口上指定,而是直接在方法上指定。
例如,声明一个判定对象是否相等的泛型方法:
Public Module Comparisons
Public hinction AreEqual(Of T) (ByVal a As T, ByVal b As T) As Boolean
Return a.Equals(b}
End Function
在这个例子中,AreEqual方法是在模块中定义的——当然也可以在类和接口中定义口AreEqual方法接受两组参数。第一组参数是类型参数T。第二组参数是方法接受的普通参数,其类型由类型参数T定义。
与泛型类一样,在泛型方法中编写代码时,类型参数被当做System.Object类型处理。这严重限制了使用类型参数声明的参数和变量的功能。也就是说,只能进行赋值和调用所有System.Object变量的几个方法。
与泛型类型一样,泛型方法可以接受多个类型参数:
Public Class Comparisons
Public Function AreEqual(Of T, R) (ByVal a As Integer, ByVal b As T) As R
' implement code here
End Function
End Class
在这个例子中,该方法在类中而不是在模块中定义a方法接受两个类型参数T和R。方法的第一个参数是普通的类型,第二个参数的类型是T,返回类型被设定为R。这个例子展示了如何在方法参数列表和返回类型中同时使用普通类型和泛型类型参数,以及如何扩展方法代码。
VB 2010 (32)泛型方法
最新推荐文章于 2020-04-12 11:32:08 发布