6

私の .NET アプリケーションは、ユーザーのコレクションで動作します。User オブジェクトには、ユーザー名、フルネーム、ドメインが含まれています....

辞書キーがユーザー名である 1) リストまたは 2) 辞書の間で、ユーザーを保存するのにどのタイプのコレクションを優先する必要があるのだろうか。

ユーザー名からユーザーを取得する必要がある場合、辞書オプションが最速であることは理解していますが、ユーザー名が 2 回参照されるため、一貫性エラーが発生する可能性があります。(辞書キーおよびユーザー属性として)? また、デザインの観点からの違いについても教えていただけますか?

4

4 に答える 4

3

通常、UserNameでユーザーを探す場合は、必ず辞書を使用してください。リストを使用すると、正しいリストへの道を「foreach」する必要があります。一貫性については、辞書の操作のみが許可されるManagerクラスを実装して、一貫性を確保します。多くのメンバーシップエンジンでは、ユーザー名を変更できません。それはあなたの解決策に役立ちますか?

于 2012-07-30T14:53:26.057 に答える
2

設計の観点からの最善のアプローチは、カスタム クラス UserCollection を作成し、実際のストレージの詳細を非表示にすることです。これにより、他のコードに影響を与えることなく、List から Dictionary に変更できます。それが抽象化の追加レイヤーであるとします。

List と Dictionary の違いは概念的なものです。単純なルール - アイテムが一意で、O(c) 検索の複雑さが必要な場合は辞書を使用し、それ以外の場合はリストを使用します。

于 2012-07-30T14:54:40.067 に答える
0

要件によって異なりますが、リストが小さい場合はパフォーマンスの違いは無視できると思います。一貫性を考慮すると、リストを使用することをお勧めします。次のようなクエリを使用できます。

var user = Users.SingleOrDefault(user => user.username == 'username')
于 2012-07-30T14:57:11.140 に答える
0

特にデータがデータベースに保存されている場合は、オブジェクトのリストを好みます。データ ソースにクエリを実行してリストを返すことができると、非常に便利です。また、データ・グリッドなどでデータが順次アクセスされる場合にも適しています。

これが役立つことを願っています。

于 2012-07-30T15:11:51.400 に答える