ICollection<T>.Add()数组的实现是否违反Liskov替换原则?该方法导致a NotSupportedException,它确实打破了LSP,恕我直言.
string[] data = new string[] {"a"};
ICollection<string> dataCollection = data;
dataCollection.Add("b");
Run Code Online (Sandbox Code Playgroud)
这导致了
未处理的异常:System.NotSupportedException:Collection具有固定大小.
我找到了一个关于 - Stream实现的非常相似的问题.我打开一个单独的问题,因为这个案例非常不同:Liskov替换原则和Streams.这里的不同之处在于,ICollection它不像-class那样提供CanAdd-Property或类似的东西Stream.