碰撞c#中的对象

本文关键字:对象 碰撞 | 更新日期: 2023-09-27 18:21:48

过去我问过一个关于a B C 三个类的继承的问题

看看c#中的冲突和对象

我的新问题是,如果类A是一个接口,是否可以这样做?

interface A {
...
}
class B: A {
...
}
class C: A {
...
}

碰撞c#中的对象

这里没有区别。仍然无法将C对象分配给List<B>

var listA = new List<A>();
var listB = new List<B>();
foreach(A item in listA)
    listB.add(item);

如果listA中有任何C实例,将抛出异常。

但另一个问题的解决方案仍然有效:

var listA = new List<A>();
var listB = new List<B>();
foreach(B item in listA.OfType<B>())
    listB.add(item);

Interface继承时,它不称为继承,而称为实现。接口所做的是提醒您必须在代码中实现哪些方法。

在创建一个类时,可以添加尽可能多的接口,但只能从一个类继承。