해당 배열은 바이트 스트림입니다. 배열 만 반환하는 문제는 읽기 전용이 아니므로 라이브러리의 클라이언트가 내용을 수정할 수 있다는 것입니다. 배열 대신 라이브러리에서 반환 할 컬렉션 유형은 무엇입니까?
IEnumerable, IList, List, ReadOnlyCollection, Collection, et cetera.
있습니다. 내 초기 접근 방식
은 다음과 같이 뭔가를했다 :
data
바이트 배열입니다
Data = new ReadOnlyCollection<byte>(data);
. Data 속성은 일부 인터페이스 유형 (IEnuerable, IList 등)이 될 것입니다. 그러나 사용할 항목이 확실하지 않습니다. 꽤 많은 표준 인 IEnumerable을 추천합니다. 그러나 여기서는 순서가 중요하며, 바이트 스트림은 배열과 구문상의 유사성을 유지해야합니다. IEnumerable은 개별 표시의 액세스를 허용하지 않으므로 여기서 분명히 최적의 선택이 아닙니다.
IList가 읽기 전용이 아니므로 ICollection이 정확하다고 생각하십니까? 확실하지 않습니다. 너무 많은 콜렉션 유형이있는 것 같고 사용법에 관해서는 다소 혼란스러워집니다.
개체가 데이터를 "소유"하고 사람들이 데이터를 변경할 수있게하려는 경우 큰 문제입니다. 그렇습니다. ToArray를 호출하여 사본을 만들 수는 있지만, 그렇지 않은 경우가 있습니다. 필요하지 않은 경우 사본을 만들어야하는 것은 부끄러운 일입니다. 'MemoryStream'과'ReadOnlyCollection'모두 앞쪽에 더 좋습니다. –