4

両方のオブジェクトが値型ではなく、両方が Equals(...) メソッドをオーバーライドした型を表していると仮定すると、以下の間に機能上の違いはありますか?

  • 通話中obj1.Equals(obj2)
  • 呼び出しObject.Equals(obj1, obj2) ...または機能的に同じですか?

私が読んでいる Apress の本 (Pro C# 2008) は、実際には非常に優れており、このメソッド (およびReferenceEquals(...)) を「(非常に役立つ) 静的メソッド」と呼んでいますが、ここでの利点を理解するのに苦労しています。

ReferenceEquals(...)2 つのオブジェクトが同じオブジェクトを参照しているかどうかを判断できるため (メソッドと演算子がオーバーライドされているかどうかに関係なく)、ユーティリティを確認できEquals(...)ます==

もう一方については...それほどではありません。ここで何かが足りないのですか?

4

3 に答える 3

8

最初のケースでobj1null だったとします。

于 2009-10-05T00:55:03.440 に答える
8

Object.Equals(obj1, obj2):

obj1 と obj2 が同じ参照である場合、true を返します

obj1 または obj2 が null の場合、false を返す

それ以外の場合は obj1.Equals(obj2) を返します

于 2009-10-05T01:01:27.623 に答える
0

http://msdn.microsoft.com/en-us/library/w4hkze5k.aspxをご覧ください。

于 2009-10-05T01:05:36.037 に答える