0

Object型の'Value'というプロパティを持つクラスがあります。値は、任意のタイプ、構造、クラス、配列、IListなどにすることができます。

私の問題は、セッターと値が変更されたかどうかを判断することです。これは値型にとっては十分に単純ですが、参照型とリストには問題があります。

クラスの場合、Equalsメソッドが正しく実装されていると思いますか、それともセッターが呼び出されるたびに値が変更されていると思いますか?変更されたと想定した場合は、動作が一貫するように、値型についても想定する必要があります。

リストについては、サイズをチェックしてから、コレクション内のすべてのアイテムをチェックして、それらが変更されているかどうかを確認できます。

この問題をどのように処理しますか?

4

2 に答える 2

5

持っている代わりに

object Value

あなたは宣言することができます

IEquatable<T> Value

このようにして、ValueのすべてのインスタンスがEqualsメソッドを実装することがわかります。したがって、2つのインスタンスの同等性を確認できます。

于 2009-11-01T18:00:13.900 に答える
4

値が変更されたかどうかを気にする必要があるのはなぜですか?セッターが呼び出されるたびに値が変更されると想定できない理由はありますか?

技術的な理由があれば、いつでもジェネリックスを使用してValue、typeのIEquatable<T>代わりにtypeを作成できますobject。これにより、オブジェクトがメソッドを実装したことが保証されますEquals()

于 2009-11-01T18:02:06.160 に答える