据说.net中的所有对象都继承自System.Object。真的吗?
我尝试在 MSDN 上查找 Ilist 接口继承自哪个对象,但没有提及它的继承。
谁能告诉我一些事情?
据说.net中的所有对象都继承自System.Object。真的吗?
我尝试在 MSDN 上查找 Ilist 接口继承自哪个对象,但没有提及它的继承。
谁能告诉我一些事情?
接口本身不是类层次结构中的对象。从它们代表一个对象的意义上说,它们是“类型”。但它们本身并不是具体的类。
例如,您不能实例化IList<int>
. 这不会编译:
var list = new IList<int>();
但是,您可以创建一个List<int>
,它确实继承自System.Object
:
var list = new List<int>();
这个实例list
可以看作是许多不同的接口。例如:
var listVariantA = list as IList<int>();
var listVariantB = list as IEnumerable<int>();
等等。这是因为它的具体类型List<int>
实现了多个接口。它不会从它们继承,因为它们本身不是具体类型。
似乎您迷路的地方在于继承和接口之间的不同。有人可能会说接口是“.NET 对多重继承的回答”,这是一个公平的说法。但这两个概念之间存在根本区别。将继承视为对象的层次结构:
Vehicle
Car
Honda Accord
Toyota Camry
Truck
Ford F150
等等。接口不适合这种层次结构。相反,将接口视为对象满足的契约。例如,所有Vehicle
对象都可能实现该IDrivable
接口。其中一些可能会实现该IFlyable
接口。有些仍然可能同时实现(飞行汽车)。