EqualityComparer.Default vs. T.Equals
- 论坛
- EqualityComparer<T>.Default vs. T.Equals
25 浏览
EqualityComparer.Default vs. T.Equals
假设我有一个需要比较两个类型为
void DoSomething(T o1, T o2)
{
if(o1.Equals(o2))
{
...
}
}
现在假设我的
private IEqualityComparer
public MyClass() {}
public MyClass(IEqualityComparer
{
_comparer = comparer;
}
void DoSomething(T o1, T o2)
{
if((_comparer != null && _comparer.Equals(o1, o2)) || (o1.Equals(o2)))
{
...
}
}
为了去除这个冗长的if语句,如果我可以让_comparer在使用常规构造函数时默认为“默认比较器”,那就好了。我搜索了类似于
我找到了
public MyClass()
{
_comparer = EqualityComparer
}
void DoSomething(T o1, T o2)
{
if(_comparer.Equals(o1, o2))
{
...
}
}
...对于所有可能的情况是否提供了与使用o1.Equals(o2)相同的结果?
(顺便说一句,这是否意味着我还需要使用任何特殊的泛型约束来限制