3

Object.Equalsメソッド(オブジェクト)に関するMicrosoftのMSDNライブラリの記事(http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx )に、 Equalsをオーバーライドする方法を示す例が示されています。次のようになります。

public override bool Equals(Object obj) {
    //Check for null and compare run-time types.
    if (obj == null || GetType() != obj.GetType()) return false;
    // ...
}

次のドキュメントでは、次のステートメントに注意が向けられました。

(typeofは静的タイプを返すため、ここでは使用されないことに注意してください。)

上記のステートメントは、簡単に言うと何を意味し、ここでの注意は何ですか?

4

2 に答える 2

5

彼らの例では、Point.Equals()の実装で、GetType()の代わりにtypeof(Point)が使用された場合、Point3D.Equals()の実装でbase.Equals()を利用できません。常にfalseを返します。

GetType()を使用することにより、typeof(Point)への型比較をハードコーディングする代わりに、型の実行時評価を保証します。これにより、サブクラスはタイプ比較のために基本クラスに頼ることができ、サブクラスは基本クラスを補足するデータに集中できます。

于 2012-07-13T05:25:11.700 に答える
2
于 2012-07-13T05:25:35.020 に答える