继承树在c#中能有多深?
继承树在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 { ... ... }
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实现是另一个臭名昭著的例子,它会让你想起继承层次结构的过度深度。。。