내가 알 수 있듯이 .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
하여 목록의 읽기 전용 버전을 가져올 수 있습니다 . 또는 기존 포장 IList
A의 ReadOnlyCollection<T>
객체입니다.