多重继承和对象C#

yog*_*ogi 5 c# oop

抱歉没有得到任何问题的时髦标题.

我被告知.Net(C#)不支持多重继承.但是看看下面的foo例子,我想知道这是真的吗?

class fooList
{
    public int Index()
    {
        return 0;
    }
}    
class foo : fooList
{
    public foo()
    { }
}
class testFoo
{
    void test()
    {
        foo obj = new foo();

        // From object
        obj.Equals(obj);
        obj.GetHashCode();
        obj.GetType();
        obj.ToString();

        // From fooList
        obj.Index();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们可以看到我有一个类fooList和一个根据语句foo继承的类fooList(C#不支持多重继承),类的对象foo应该只有一个Index()来自fooList类的方法,但是它有更多的方法来自对象类.它清楚地表明默认情况下所有类都继承object类.所以提出了问题

  1. C#不支持多重继承真的完全正确吗?
  2. 我想它在CLR级别支持它,而不是它在编码时不支持它?

Ant*_*ram 13

C#不支持单个级别的多重继承.C#确实支持层次结构中的多继承.您所看到的是,在继承System.Object层的顶部是层次结构,它是.NET中类和结构的顶级基类.

你不能拥有的是:

class A { }
class B { }
class C : A, B { }
Run Code Online (Sandbox Code Playgroud)

你有什么可以有:

class A { }
class B : A { }
class C : B { } 
Run Code Online (Sandbox Code Playgroud)

合理?

为了更加完整,C#允许您通过使用接口来模拟多重继承.那就让我们回去吧.

class A { }
interface B { }
class C : A, B { } // legal
Run Code Online (Sandbox Code Playgroud)

在此示例中,C的声明合法的,您需要实现接口B定义为C的一部分的各种成员.