【发布时间】:2016-04-07 02:40:51
【问题描述】:
MS源码here
.net中List<T>类继承两个接口
(IList<T> 和System.Collections.IList)
它实现了两个方法添加方法
public void Add(T item) {
if (_size == _items.Length) EnsureCapacity(_size + 1);
_items[_size++] = item;
_version++;
}
int System.Collections.IList.Add(Object item)
{
ThrowHelper.IfNullAndNullsAreIllegalThenThrow<T>(item, ExceptionArgument.item);
try {
Add((T) item);
}
catch (InvalidCastException) {
ThrowHelper.ThrowWrongValueTypeArgumentException(item, typeof(T));
}
return Count - 1;
}
第一个方法是公共的,第二个是私有方法。
IList 没有 add 方法,但 System.Collections.IList 有
从 System.Collections.IList 继承是什么概念?
【问题讨论】:
-
明确一点,类实现接口并从基类继承。类不继承接口。 (虽然接口可以从基本接口继承)。
-
List<T>不从IList<T>和IList继承,它实现它们,因为它们是接口,而不是类。您可以实现任意数量的接口——这不是“多重继承”。 -
第二个不是私有的,它只是 System.Collections.IList.Add 方法的显式实现
-
"从
System.Collections.IList继承是什么概念?" - 这样List<T>就可以在任何需要System.Collections.IList类型的地方使用——这在使用非泛型代码时尤其重要。就这么简单。
标签: c# .net multiple-inheritance