当前IEnumerable是否比IReadOnlyList具备更强的封装安全性?
暴露集合成员:IReadOnlyCollection vs IEnumerable 的选择
我特意翻了早年Stack Exchange上的两个经典问题:《IEnumerable vs IReadonlyCollection vs ReadonlyCollection for exposing a list member》和《ReadOnlyCollection or IEnumerable for exposing member collections?》,其中Jon Skeet的回答特别值得参考——他建议优先用**IReadOnlyCollection
举个例子,要是你对外暴露的是IEnumerable
ICollection<Order> evil = (ICollection<Order>)customer.Orders; evil.Add(order3);
这种操作直接绕开了你的只读限制,偷偷修改了内部集合,完全违背了你想让集合只读的初衷。
而用IReadOnlyCollection
内容的提问来源于stack exchange,提问作者w0051977
相关产品推荐
相关产品推荐

