C# 在c中对对象进行分类#
过去我问过一个关于三个类别a、B、C的继承的问题 看看 我的新问题是,如果类A是一个接口,是否可以这样做C# 在c中对对象进行分类#,c#,class,object,C#,Class,Object,过去我问过一个关于三个类别a、B、C的继承的问题 看看 我的新问题是,如果类A是一个接口,是否可以这样做 interface A { ... } class B: A { ... } class C: A { ... } 这里没有区别。您仍然无法将C对象分配到列表中 当您从接口继承时,它不是继承,而是实现。接口所做的是提醒您必须在代码中实现哪些方法 创建一个类时,您可以添加任意多个接口,但仅限于从一个类继承。是的,您可以-这称为实现接口,但是该类必须在该接口上实现所有方法/属性,否则该类将
interface A {
...
}
class B: A {
...
}
class C: A {
...
}
这里没有区别。您仍然无法将
C
对象分配到列表中
当您从接口继承时,它不是继承,而是实现。接口所做的是提醒您必须在代码中实现哪些方法
创建一个类时,您可以添加任意多个接口,但仅限于从一个类继承。是的,您可以-这称为实现接口,但是该类必须在该接口上实现所有方法/属性,否则该类将无法编译-所有其他通用的东西都可以使用相同的工具:阅读一些关于C的好书。我深入推荐Jon Skeetwo的C,你说的“可能”是什么意思?你只是打了它,所以这是可能的。你的意思是它是否会编译,还是会给出运行时错误?试试看。除了unsafe
块之外,C#中没有“未定义的行为”,所以您可以试试代码,看看它是否能按预期编译和工作。如果它没有像您期望的那样工作,那么您有一个问题要问!:-)我想这样做是为了构建通用搜索引擎,我想知道哪种方法是构建通用搜索引擎的最佳方法
var listA = new List<A>();
var listB = new List<B>();
foreach(A item in listA)
listB.add(item);
var listA = new List<A>();
var listB = new List<B>();
foreach(B item in listA.OfType<B>())
listB.add(item);