IDictionaryからクラスを派生させた場合、与えられたVが元のコレクションに追加された後に変更されていないことを確認するにはどうすればよいですか?ディクショナリに含まれる値が変更されたかどうかの検出
答えて
は辞書に付加価値型はイベントの「変更」タイプが含まれている場合は、それを購読する...そこに多くの方法がありますが、それは依存します。
値の型にこのようなイベントが含まれていないが、ソースコードを制御している場合は、イベントを追加してサブスクライブします。
値の型は、このようなイベントが含まれていない、とあなたは、ソースコードを制御するクローン化された値か何かで値のシャドウコピーを維持することを検討し、比較をしないと。
最後のケースでは、タイプを制御せずイベントを含んでいないので、あなたは何の選択もせずに残していますが、何とかそれぞれの現在の状態を記録しますその状態と比較して、変更されているかどうかを確認します。
IDictionaryをクラスに実装する場合は、isdirtyや他のイベントやトラッキングをオブジェクトのセッターに追加できます。しかし、オブジェクトが複雑で、オブジェクトのサブプロパティが変更されていると、物事が少しばたつくことがあります。それはあなたの使い方のコンテキストに依存します - オブジェクトが変更されたときにこれをイベントドリブンにしたいのですか、それとも知る必要がありますか?ゲッター上にある場合は、最後に取得または追加されたときのオブジェクトのハッシュをいつでもチェックできます。
変更カウントを値とともに保存し、変更が行われるたびに値を増やします。次に、変更カウントをチェックして、オブジェクトが変更されているかどうかを確認することができます。
私が理解していることは、格納された値が変更されたかどうかを知るための簡単な方法はありません。これは、私が本当に必要とする情報(私がしていること)が必要な場合は、時々値のリストを歩き、変更されたかどうかを確認する必要があることを意味します。
私はそのような影響をプロファイルする必要があります。うまくいけば私は別のスレッドで発生し、比較で非常に効率的であるように実装することができます。つまり、VをIComparableにする必要があります。
それが参照型だ場合、私は、あなたがたIDictionaryに含まれる予定のクラスにINotifyPropertyChangedを実装します。 PropertyChangedイベントを購読するアイテムの「追加」では、アイテムの削除時に登録を解除してください。そうしないと、含まれているオブジェクトインスタンスへの参照が「リーク」します(収集されません)。
- 1. 何かが変更されたかどうかを検出します
- 2. システムクロックが変更されたかどうかを検出しますか?
- 3. iFrame内のURLが変更されたかどうかを検出します
- 4. ウェブページが変更されたかどうかを検出します
- 5. フレックス - オブジェクトデータが変更されたかどうかを検出する方法?
- 6. 変更されたメモリデータをどのように検出できますか?
- 7. CMakeはどのように変更されたファイルを検出しますか
- 8. WPFデータバインディング:項目の変更はどのように検出されますか?
- 9. プロセスが開始されてからexe名が変更されたかどうかを検出するにはどうすればいいですか?
- 10. 変数が別の関数内で変更されたかどうかを検出します。
- 11. prePersist()で値が変更されたかどうか確認できますか?
- 12. テキストコンテンツにCDATAが含まれているかどうかを検出します
- 13. サーバーデータベースがiPhoneから変更されたことをどのように検出できますか?
- 14. ABAddressBookRegisterExternalChangeCallbackから変更されたものを検出します。
- 15. フォルダの内容が変更されたかどうかを検出しますか?
- 16. 画面がタッチされたかどうかを検出する
- 17. モデルが変更されたかどうか調べるには
- 18. テーブルビューでアイテムが変更されたときを検出するにはどうすればよいですか?
- 19. テキストボックスのコンテンツが変更されたかどうかを検出するバッテリに優しい方法
- 20. ファイルがアップロードされたかどうかの検出
- 21. 検出長さが変更されました
- 22. Eclipse Egitで変更されたファイルが検出されない
- 23. 変数の値が変更されるかどうか確認する
- 24. パネル上の入力ボックスが変更されたかどうかを検出します。
- 25. エンティティにバインドされたバインディングソースの変更を検出するにはどうすればよいですか?
- 26. XCode UIテストで画面が変更されたことをどのように検出できますか?
- 27. iCloudでファイルが変更されたときは、どのように検出しますか?
- 28. gitはファイルが変更されたことをどのように検出しますか?
- 29. TextViewのテキストが変更されたかどうかを検出する最良の方法は?
- 30. ページコントロールの値が変更され、どの値が変更されるのかを確認する
これは、可能な回答ではなく、説明として元の質問に追加する必要があります。 –