Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中对对象进行分类#_C#_Class_Object - Fatal编程技术网

C# 在c中对对象进行分类#

C# 在c中对对象进行分类#,c#,class,object,C#,Class,Object,过去我问过一个关于三个类别a、B、C的继承的问题 看看 我的新问题是,如果类A是一个接口,是否可以这样做 interface A { ... } class B: A { ... } class C: A { ... } 这里没有区别。您仍然无法将C对象分配到列表中 当您从接口继承时,它不是继承,而是实现。接口所做的是提醒您必须在代码中实现哪些方法 创建一个类时,您可以添加任意多个接口,但仅限于从一个类继承。是的,您可以-这称为实现接口,但是该类必须在该接口上实现所有方法/属性,否则该类将

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

看看

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

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);