在this question。我们发现在.NET 1.1中,Array.IndexOf(array, value)
使用
value.Equals(arrayElement) == true
而.NET 2.0将其更改为使用
搜索元素arrayElement.Equals(value) == true
显然,这两个结果之间的潜在差异源于多态性,但有没有理由为什么后一个版本更可取?更一般地说,如果我要比较两个对象a
和b
,是否有理由更喜欢a.Equals(b)
或b.Equals(a)
?
答案 0 :(得分:2)
我想这样做可以避免在您对Equals
提供的对象中覆盖IndexOf
时出现问题。换句话说,如果class Foo
有一些奇怪的Equals
实现,那么:
Foo f = new Foo();
Bar b = arrayOfDateTimes.IndexOf(f);
可能会破坏行为并产生奇怪的结果。
答案 1 :(得分:0)
只是一个猜测,但与2.0版本相比,1.1版本的NullReferenceExceptions可能有更高的速度。