Ric*_*chK 7 c# interface readonly-collection
ReadOnlyCollection<T>实现ICollection<T>具有添加和删除等方法的界面.我知道如何使用属性从Intellisense隐藏方法,但是如果我尝试使用这些方法,怎么可能导致实际的编译错误?
(顺便说一句,我知道在ROC上调用Add和Remove是没有意义的,这是一个关于导致继承的memebers的编译错误的问题,而不是使用正确的数据结构).
Jon*_*eet 17
它们是通过显式接口实现实现的,如下所示:
void ICollection<T>.Add(T item) {
throw NotSupportedException();
}
Run Code Online (Sandbox Code Playgroud)
该方法仍然是可调用的,但仅当您将对象视为一个时才可调用ICollection<T>.例如:
ReadOnlyCollection<int> roc = new ReadOnlyCollection<int>(new[] { 1, 2, 3 });
// Invalid
// roc.Add(10);
ICollection<int> collection = roc;
collection.Add(10); // Valid at compile time, but will throw an exception
Run Code Online (Sandbox Code Playgroud)