C# 为什么对象(根)类不冲突多重继承

C# 为什么对象(根)类不冲突多重继承,c#,.net,oop,C#,.net,Oop,我们知道.Net不支持多重继承。因此,我们只能继承一个类。但默认情况下,每个类都继承“object”类。所以,当我继承任何其他类时,为什么不发生错误呢 例如A-基类,B-派生类。当我使用A:B时,隐式对象类也被继承为(我认为)A:B,object。如果.Net不支持多重继承,怎么可能呢。不,不是这样的-只有一个继承链,那就是: __________ | Object | ---------- ^ | __________ | A | ---------- ^

我们知道.Net不支持多重继承。因此,我们只能继承一个类。但默认情况下,每个类都继承“object”类。所以,当我继承任何其他类时,为什么不发生错误呢


例如A-基类,B-派生类。当我使用A:B时,隐式对象类也被继承为(我认为)A:B,object。如果.Net不支持多重继承,怎么可能呢。

不,不是这样的-只有一个继承链,那就是:

__________
| Object |
----------
    ^
    |
__________
|   A    |
----------
    ^
    |
__________
|   B    |
----------
任何一个类只有一个直接基类,但类的继承链可能很长


举个例子说明为什么这与直接从
A
继承的
B
不同,如果
A
覆盖
ToString
,则
B
无法调用
对象.ToString()的原始实现-它只能调用
A
的版本(当然,还要重写
ToString
本身)。

很简单,声明的类只有在不从另一个类继承的情况下才从
对象继承。编译器所做的是有效地更改

public class MyBaseLessClass
{
}


因此,每个类都有一个继承自的类。(有点像:)

将对象视为其他所有类的父类。A班是孩子,B班是孙子。B只有一个父类,它是A&对象是B的父级。
public class MyBaseLessClass : object
{
}