继承树在c#中能有多深?

继承树在c#中能有多深?,c#,.net,inheritance,C#,.net,Inheritance,继承树在c#中能有多深? 假设我有一个类a,我创建了一个从a派生的新类B。然后我创建了一个名为C的新类,它派生自B等等 我可以用这种方法创建多少个实际为A的类 继承树有限制吗 public class A { ... ... } public class B:A { ... ... } public class C:B { ... ... } public class D:C { ... ... }

继承树在c#中能有多深? 假设我有一个类
a
,我创建了一个从
a
派生的新类
B
。然后我创建了一个名为
C
的新类,它派生自
B
等等

我可以用这种方法创建多少个实际为
A
的类

继承树有限制吗

public class A
{
 ...
 ...        
}

public class B:A
{
 ... 
 ...                       
}

public class C:B
{
 ...
 ...
}

public class D:C
{
 ...  
 ...
}   

我认为没有真正的限制。

在C#规范中没有限制

很可能每个实现都有一些基于内部表大小的荒谬的大限制


在任何平台上,用普通的手写代码都不太可能做到这一点。自动生成的代码有可能达到编译器/运行时限制(如方法大小或名称长度)。如果您感兴趣,您可以尝试自己达到限制-通常软件限制恰好是2的幂(比如开始时为16K/65K)。

没有限制,但保持继承层次结构非常简单确实是一个很好的指导原则

您还可以在MSDN上找到代码分析,当层次结构深度超过4级时,它会设置警告:

原因
类型在其继承层次结构中有四个以上的层次


据我所知,没有明确的限制,但我会说,保持4-6或最多一个深度数字,这样会造成不必要的复杂性——“让事情尽可能简单,而不是更简单”——爱因斯坦

以下是一个链接,您可能会找到帮助:


快乐编码

理论上没有,但有一种叫做界面的东西很漂亮。你需要它到底有多深。。拥有一个极其深刻的继承结构最终将无法维护。如果你不得不问,你可能已经做错了什么。(此外,如果存在限制,那么它将是.NET限制,而不是C#1限制,因为不同语言的类可以相互继承)Microsoft不遵循这一规则。示例
System.Windows.Forms.Form
@SriramSakthivel这不是规则,而是指南。如果你真的有很好的理由打破这个准则,你可以这么做。WPF实现是另一个臭名昭著的例子,它会让你想起继承层次结构的过度深度。。。