泛型约束怎么设置
代码如下,判断两个List是否相等:
public bool CompareSequenceList<T>(List<T> source, List<T> target)
{
bool res = true;
if (source.Count != target.Count)
res = false;
else
{
for (int i = 0; i < source.Count; i++)
{
if (source[i] == target[i])
{
res = false;
break;
}
}
}
return res;
}
编译提示:source[i] == target[i]出错,==运算符无法比较
我要比较的值有可能是int,double,Enum...等, 如何在方法后加对应的约束;
代码用的.net framework2.0框架,无法用Linq...
------最佳解决方案--------------------本帖最后由 caozhy 于 2012-11-29 16:27:12 编辑
where T : IComparable
然后代码中使用 source[i].CompareTo(target[i]) == 0 代替 source[i] == target[i]
------其他解决方案--------------------代码贴错了,是if (source[i] != target[i])
------其他解决方案--------------------直接调用Equals方法,那个是从Object继承过来的。
------其他解决方案--------------------用where约束比较麻烦,如果单纯解决问题,还不如直接调用Equals方法代替==比较相等,