有问题的数组是一个字节流。返回数组的问题是它不是只读的,因此库的客户端可以修改其内容。从库而不是数组返回什么样的集合类型?
有包装的阵列我不知道选哪个这么多不同的方式:
IEnumerable, IList, List, ReadOnlyCollection, Collection, et cetera.
此外,返回类型可以是从实际的实例类型不同。
我最初的办法是做这样的事情:
Data = new ReadOnlyCollection<byte>(data);
凡data
是一个字节数组。 Data属性应该是一些接口类型(IEnuerable,IList等等)。但是,我不确定要使用哪一个。我看到很多人推荐IEnumerable,因为它非常标准,但顺序很重要,在我看来,一串字节应该保持与数组的语法相似性。 IEnumerable不允许访问各个标记,因此它显然不是这里的最佳选择。
IList不是只读的,所以我想ICollection会是正确的..?不确定。似乎有这么多的集合类型,我对使用哪个类型感到困惑。
如果对象“拥有”数据并且不想让人们更改其数据,那么这很重要。是的,他们可以调用'ToArray'来创建一个副本,但这不是一回事 - 在没有必要的情况下强制*创建副本是一件令人遗憾的事情。 'MemoryStream'和'ReadOnlyCollection'在这方面都更好。 –