有問題的數組是一個字節流。返回數組的問題是它不是隻讀的,因此庫的客戶端可以修改其內容。從庫而不是數組返回什麼樣的集合類型?
有包裝的陣列我不知道選哪個這麼多不同的方式:
IEnumerable, IList, List, ReadOnlyCollection, Collection, et cetera.
此外,返回類型可以是從實際的實例類型不同。
我最初的辦法是做這樣的事情:
Data = new ReadOnlyCollection<byte>(data);
凡data
是一個字節數組。 Data屬性應該是一些接口類型(IEnuerable,IList等等)。但是,我不確定要使用哪一個。我看到很多人推薦IEnumerable,因爲它非常標準,但順序很重要,在我看來,一串字節應該保持與數組的語法相似性。 IEnumerable不允許訪問各個標記,因此它顯然不是這裏的最佳選擇。
IList不是隻讀的,所以我想ICollection會是正確的..?不確定。似乎有這麼多的集合類型,我對使用哪個類型感到困惑。
如果對象「擁有」數據並且不想讓人們更改其數據,那麼這很重要。是的,他們可以調用'ToArray'來創建一個副本,但這不是一回事 - 在沒有必要的情況下強制*創建副本是一件令人遺憾的事情。 'MemoryStream'和'ReadOnlyCollection'在這方面都更好。 –