将通用对象/对象列表与 C 进行比较#

Compare generic objects/object list with C#

提问人:Kyu96 提问时间:9/15/2019 最后编辑:Kyu96 更新时间:9/15/2019 访问量:71

问:

所以我想知道比较对象的最佳方法是什么?在我的例子中,对象可以是任何基元类型,也可以是基元列表。在第二种情况下,我必须一一比较它们。 到目前为止,我有这样的东西:

private static bool EqualityCheck<TValue>(TValue value1, TValue value2)
{
    if (typeof(List<object>).IsAssignableFrom(typeof(TValue)))
    {
        // .. Compare if TValue is list<object>
    }
    else
    {
        // .. Compare normal object
    }
}

如何进行比较?

编辑:

private static bool EqualityCheck(object a, object b)
{
    if (a is IEnumerable enumA && b is IEnumerable enumB)
        return enumA.Cast<object>().SequenceEqual(enumB.Cast<object>());

    return Equals(a, b);
}
C# 对象 比较 相等性

评论

0赞 9/15/2019
比较对象的最佳方法是什么?您可以考虑实现 IComparable 接口。
0赞 Kyu96 9/15/2019
@Dari我知道这一点,我的问题指的是实际的比较。如何比较它们。此外,我的类是静态的,因此无法扩展 IComparable。
0赞 Dennis VW 9/15/2019
使用 Object.Equal() 比较对象。将 Lists 与 Object.SequenceEquals() 进行比较,因为对 List<T1> 和 List<T1> 调用 Equal 将返回 true,即使它们可能包含不同的项。您可能需要对类型参数进行约束,以将其定义为 Object。对象类型实现 Equals。
0赞 Kyu96 9/15/2019
@Dennis1679 请检查,我编辑了我的帖子。

答: 暂无答案