使用哪种.Equals()方法

时间:2009-08-28 14:09:05

标签: c# .net polymorphism

this question。我们发现在.NET 1.1中,Array.IndexOf(array, value)使用

搜索了一个元素
value.Equals(arrayElement) == true

而.NET 2.0将其更改为使用

搜索元素
arrayElement.Equals(value) == true

显然,这两个结果之间的潜在差异源于多态性,但有没有理由为什么后一个版本更可取?更一般地说,如果我要比较两个对象ab,是否有理由更喜欢a.Equals(b)b.Equals(a)

2 个答案:

答案 0 :(得分:2)

我想这样做可以避免在您对Equals提供的对象中覆盖IndexOf时出现问题。换句话说,如果class Foo有一些奇怪的Equals实现,那么:

Foo f = new Foo();
Bar b = arrayOfDateTimes.IndexOf(f);

可能会破坏行为并产生奇怪的结果。

答案 1 :(得分:0)

只是一个猜测,但与2.0版本相比,1.1版本的NullReferenceExceptions可能有更高的速度。