[java] .NET 4.0의 읽기 전용 목록 또는 수정할 수없는 목록

내가 알 수 있듯이 .NET 4.0에는 여전히 읽기 전용 목록이 없습니다. 프레임 워크에 여전히이 기능이없는 이유는 무엇입니까? 이것이 도메인 중심 설계를 위한 가장 일반적인 기능 중 하나가 아닙니까?

Java가 C #에 비해 갖는 몇 가지 장점 중 하나는 Collections.unmodifiablelist (list) 메서드 의 형태 로 IList <T> 또는 List <T>에서 오래 지연된 것 같습니다.

사용 IEnumerable<T>은 질문에 대한 가장 쉬운 해결책 ToList입니다. 사용하여 사본을 반환 할 수 있습니다.



답변

당신이 찾고있는 ReadOnlyCollection.NET2 이후 주변왔다한다.

IList<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);

또는

List<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = foo.AsReadOnly();

이렇게하면 래핑 된 컬렉션의 변경 사항을 반영 하는 읽기 전용 보기 가 생성됩니다 .


답변

인터페이스 사용을 좋아하는 사람들을 위해 : .NET 4.5는 예를 들어에서 IReadOnlyList구현되는 일반 인터페이스를 추가합니다 List<T>.

인덱서 속성 IReadOnlyCollection과 유사 하며 추가합니다 Item.


답변

이미 프레임 워크 내에 있는 ReadOnlyCollection 은 어떻습니까?


답변

목록의 가장 일반적인 패턴이 모든 요소를 ​​반복 IEnumerable<T>하거나 IQueryable<T>읽기 전용 목록으로도 효과적으로 작동 할 수있는 경우입니다.


답변

2.0에서는을 호출 AsReadOnly하여 목록의 읽기 전용 버전을 가져올 수 있습니다 . 또는 기존 포장 IListA의 ReadOnlyCollection<T>객체입니다.


답변

System.Collections.ObjectModel.ReadOnlyCollection 의 문제점은 무엇입니까 ?


답변