日期:2014-05-17  浏览次数:20926 次

泛型约束怎么设置
代码如下,判断两个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方法代替==比较相等,