인터페이스에는 Add
, Remove
및 Insert
과 같은 SortedList<TKey, TValue>.Keys
속성에서 지원하지 않는 작업 외에도 인덱스 별 액세스가 포함됩니다.왜 SortedList (TKey, TValue) .Keys 속성이 ReadOnlyCollection (TKey)이 아닌 IList (TKey)입니까?
ReadOnlyCollection<T>
이 같은 List<T>.AsReadOnly
의 반환 값으로, IList<T>
구현하기 때문에 인덱스 에 의해 액세스를 제공하지만, 명시 적으로을 구현하여 Add
, 등과 같은 불법 작업을 숨 깁니다. 게다가 그것은 단지 기본 목록을위한 래퍼 일뿐입니다. 따라서 복사본을 만들지 않으므로 실제 성능이 저하되지 않도록해야합니다.
왜 SortedList<TKey, TValue.Keys
이 ReadOnlyCollection<TKey>
이 아닌지 알고 싶습니다. (그 이유에 대해 Values
속성이 ReadOnlyColllection<TValue>
이 아닌 이유는 무엇입니까?)
sortedList.Values.Add (2);를 수행하면 읽기 전용 컬렉션이 아닌 것이 이상합니다. 그것은 예외를 던졌습니다 – Andrey
정확 하 게! 매우 궁금해서 ... –
그 이유는 ReadOnlyCollection이 인터페이스가 아니라는 것입니다. 당신이 쓸 수있는 인터페이스를 가지고 있지만, ReadOnlyCollection은 자신 만 가지고 있습니다. – Andrey