1

virtual function に気づいたとき、私は今日独自の属性を実装していましたMatch。の通常の実装Matchは を呼び出すEqualsことですが、そもそもなぜそれが存在するのでしょうか?

ドキュメントには、次のように記載されていますMatch

派生クラスでオーバーライドされると、このインスタンスが指定されたオブジェクトと等しいかどうかを示す値を返します。

ドキュメントには、次のように記載されていますEquals

このインスタンスが指定されたオブジェクトと等しいかどうかを示す値を返します。

4

2 に答える 2

1

その方法の MSDN の備考セクションでは、それらの違いについて説明しています。

このメソッドは、ある属性が別の属性と等しいかどうかを判断します。そのデフォルトの実装は、値と参照の比較を実行する Equals と同じです。このメソッドをオーバーライドして、フラグやビット フィールドなど、それ自体が意味のあるコンポーネントで構成される属性値のサポートを実装します。

たとえば、値がフラグのビット フィールドに分割されたバイナリ フィールドである属性を考えてみましょう。この属性の 2 つのインスタンスには、1 つのフラグが共通に設定されていますが、他のすべてのフラグは異なります。Equals メソッドでは、2 つのインスタンスに同じフラグが設定されているかどうかを判断できませんが、Match メソッドでは判断できます。

于 2012-10-29T20:46:28.577 に答える
0

マッチのドキュメントから:

値がフラグのビット フィールドに分割されたバイナリ フィールドである属性を考えてみましょう。この属性の 2 つのインスタンスには、1 つのフラグが共通に設定されていますが、他のすべてのフラグは異なります。Equals メソッドでは、2 つのインスタンスに同じフラグが設定されているかどうかを判断できませんが、Match メソッドでは判断できます。

于 2012-10-29T20:46:36.677 に答える