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)
感觉有点循环声明的感觉。有点吃不准。
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)
感觉有点循环声明的感觉。有点吃不准。
...全文
相关推荐
vs2005 快捷键 大全
vs2005 快捷键大全! 很值得下载看看!资源免费,大家分享!!
【信息科学与工程学】【制造工程】第三十六篇 机械工程与自动化101
本系统通过多模型集成、知识增强、主动学习和持续优化等关键技术,实现了高效、高质量的自动化文本语料标注。系统采用模块化设计,支持灵活扩展,能够处理不同类型的文本数据,适应多样的标注需求。
【信息科学与工程学】【通信工程】第七十七篇 城域网+FTTR/FTTB/FTTC/FTTO的数学分析01
总带宽 Btotal需考虑各业务带宽 Bi及统计复用性(按80%计算):Btotal=0.8∑i=1nBi。调度延迟 Di=rili,其中 li为包长。:dtdN2=hνpAPpσap(Nt−N2)−τN2−hνsAPsσesN2,N2=上能级粒子数,N_t=总Er³⁺浓度,σ_ap/σ_es=吸收/发射截面,τ=荧光寿命(≈10ms),A=纤芯面积。调度分数 Scorej=w1umax−uminumax−uj+w2mmaxmj。
vc60以及vs2005下载地址列表
vc60以及vs2005下载地址列表 * 鲜花(0) 鸡蛋(0) 7 楼 cyq1162 @ 2009-06-22 06:35:11
vs2005命令
vs2005命令


