VB2005里面泛型的疑问(前沿探索 UP有分)

farrio farrio 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我现在想做一个泛型比较操作,
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)
感觉有点循环声明的感觉。有点吃不准。
...全文

相关推荐

评论 19
收藏 已收藏
分享
返回顶部
farrio
VB 16,718 成员 110,520 内容