2009-08-28 12 views
1

this questionです。 .NET 2.0は、2つの結果の間の電位差が生じてから明らかに使用する.Equals()メソッド

arrayElement.Equals(value) == true 

を持つ要素を検索するためにそれを変更しながら、私たちは、.NET 1.1で、Array.IndexOf(array, value)

value.Equals(arrayElement) == true 

を持つ要素を探していることを発見しました後者の方が望ましい理由は何ですか?より一般的には、私が比較する2つのオブジェクトabを持っている場合は、a.Equals(b)またはb.Equals(a)を好む理由がありますか?

+0

== trueは私のベーンです。 – recursive

+2

@ recursiveに同意しますが、ここではコードスニペットのポイントを強調しています。 –

+0

私は 'if(value.Equals(arrayElement)== true)'と書くことはしませんでしたが、オースティンが述べているように、強調はこの場合には便利だったようです。 – stevemegson

答えて

2

これは、IndexOfに入れているオブジェクトのEqualsを無効にするときに問題が発生しないようにするためです。あなたはいくつかの奇妙なEquals実装でclass Fooを持っている場合は、他の言葉では、この:

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

は、潜在的に行動を破壊し、奇妙な結果をもたらす可能性があります。

+0

しかし、配列に格納されているオブジェクトに奇妙な 'Equals'オーバーライドがある可能性はありますか?彼らは同じように危険であるようですが、それは潜在的にMSが変化を抱える理由があったはずだったと感じています。 – stevemegson

0

ちょうど推測ですが、1.1バージョンでは2.0バージョンと比較してNullReferenceExceptionsの割合が高い可能性があります。

関連する問題