2012-07-30 2 views
6

내 .NET 응용 프로그램은 사용자 모음과 함께 작동합니다. User 객체는 사용자 이름, 전체 이름, 도메인을 포함합니다 ....목록 또는 사전 중에서 선택

사전 키가 어디인지 1) 목록 또는 2) 사전 사이에 사용자를 저장하는 것이 좋습니다 컬렉션의 종류가 궁금합니다 사용자 이름.

사용자 이름에서 사용자를 검색해야 할 때 사전 옵션이 가장 빠르지 만 사용자 이름이 두 번 일관성 오류로 참조되기 때문에 사전 옵션이 가장 빠르다는 것을 알고 있습니다. (사전 키 및 사용자 속성으로)? 설계 관점과의 차이점은 무엇입니까?

+1

사전에 동일한 값의 키가 두 개있을 수 없습니다. 독특한 분야가 없습니까? – davenewza

+0

여기를 참조하십시오 : http://stackoverflow.com/questions/7914830/what-is-the-difference-between-list-and-dictionary-in-c-sharp – bitsmuggler

+0

FAQ를 검토하십시오.이 질문에 특별히 대답 할 수 없습니다. 그런 일반적인 끝. – Richard

답변

2

디자인 관점에서 가장 좋은 방법은 사용자 지정 클래스 UserCollection을 만들고 실제 저장 공간 세부 정보를 숨기는 것입니다. 이렇게하면 다른 코드에 영향을주지 않고 목록에서 사전으로 변경할 수 있습니다. 추가 추상화 계층이라고 가정합니다.

목록과 사전의 차이점은 개념적입니다. 간단한 규칙 - 항목이 고유하고 O (c) 검색 복잡성이 필요한 경우 사전을 사용하고, 그렇지 않으면 목록을 사용하십시오.

3

일반적으로 사용자 이름으로 사용자를 찾는 경우 확실히 사전을 사용하십시오. 목록을 사용하면 올바른 방법으로 "foreach"해야합니다. 일관성에 관해서는 사전을 조작 할 수있는 유일한 관리자 클래스를 구현하여 일관성을 강화했습니다. 많은 구성원 엔진에서 사용자 이름을 변경할 수 없습니다. 그게 당신의 해결책에 도움이 될까요?

0

요구 사항에 따라 다르지만 성능 차이는 무시할 수있을만큼 작고 목록을 사용하는 것이 일관성을 고려하여 선호하는 접근 방식이어야하며 비슷한 쿼리를 가질 수 있다고 생각합니다.

var user = Users.SingleOrDefault(user => user.username == 'username') 
0

특히 데이터가 데이터베이스에 저장된 경우 개체 목록을 선호합니다. 데이터 원본을 쿼리하고 목록이 반환되도록하는 것이 매우 유용합니다. 데이터 그리드와 같이 데이터가 순차적으로 액세스되는 경우에도 선호됩니다.

이 정보가 도움이되기를 바랍니다.