2008-10-13 4 views
15

C#을 읽고 책을 읽는 동안이 수업을 들었습니다.System.Linq.Lookup 클래스 정보

  • 왜 이것이 System.Linq 네임 스페이스에 추가되고 다른 이름은 Collections 네임 스페이스에 추가되지 않습니까?
  • 이 클래스의 의도는 무엇입니까
  • 이 클래스는 직접 인스턴스화를위한 것이 아닙니다. 이 기능은 ToLookup 확장 프로그램에서만 사용할 수 있습니다.

답변

17

클래스의 용도 : 키가 여러 값으로 매핑 될 수있는 사전입니다. 한 가지 일대일 매핑보다는 그룹화하는 것으로 생각하십시오.

ToLookup 결정을 통해서만 : 통과. 다시 말하지만, 나에게 나쁜 전화처럼 보인다. 반면에, 그 결과는 바깥 세계에 불변하다는 것을 의미합니다. 이것은 아주 좋습니다. 물론 이것을 지원하는 자신 만의 컬렉션을 작성하는 것은 매우 쉽습니다. 컬렉션에서 "적절하게"사용하는 것이 좋았을 것입니다. 제 추측으로는 MS가 일류 컬렉션 결정을 내리는 데 필요한 매우 엄격한 디자인/테스트를 통과 할 시간/돈이 없었습니다.

네임 스페이스 결정 : 아마도 위와 관련이 있습니다. System.Collections.Generic에서 자신을 만들 수없는 버전을 사용하면 조금 이상 할 것입니다.

6

마찬가지로, MiscUtil에는 MiscUtil.Linq.EditableLookup<,> 클래스가 포함되어 있습니다. 일반 ILookup<,> 인터페이스를 구현하지만 완전히 변경할 수 있으므로이를 만들고 값을 직접 추가 할 수 있습니다.