VB2005里面泛型的疑问(前沿探索 UP有分)
我现在想做一个泛型比较操作,
Public Function GenericCompare(Of T)(ByVal x As T, ByVal y As t) As Boolean
函数里面肯定不能写成
Return x = y
因为.net会说“T类型没有定义等号操作”。
我写成
Return Equals(x, y)
就可以了。
---问题1---
但是由于这个Equals函数参数是Object,也就是说这个核心操作没有用到泛型,所以我感觉这个函数实际上和
Public Function OOPCompare(ByVal x As Object, ByVal y As Object) As Boolean
Return Equals(x, y)
End Function
是完全一样的。泛型的作用几乎没有体现出来。
如果我把泛型函数修改成
Public Function GenericCompare(Of T As System.IComparable(Of T))(ByVal x As T, ByVal y As T) As Boolean
Return x.Equals(y)
End Function
就没有问题了。
---问题2---
这样使用是不是就完全用上了泛型的东西而脱离了OOP呢?
---问题3---
泛型的约束我看过一点,但是这样用约束对么?我记得约束都是来自某个类或者接口,这样的泛型接口约束是否是正确的呢?特别是
Of T As System.IComparable(Of T)
感觉有点循环声明的感觉。有点吃不准。