继承树在c#中有多深?
我们假设我有一个班级A
,并且我创建了一个源自B
的新班级A
。我创建了一个名为C
的新类,它派生自B
,依此类推。
我可以用这种方式创建多少个类A
?
继承树是否有限制?
public class A
{
...
...
}
public class B:A
{
...
...
}
public class C:B
{
...
...
}
public class D:C
{
...
...
}
答案 0 :(得分:5)
C#规范没有限制。
根据内部表的大小,每个实现很可能都有一些非常大的限制。
在正常的手写代码中你不可能在任何平台上点击。自动生成的代码有一定的机会达到编译器/运行时限制(如方法大小或名称长度)。如果感兴趣的话,你可以尝试限制自己 - 通常软件限制恰好是2的幂(如16K / 65K开始)。
答案 1 :(得分:4)
没有限制,但保持继承层次非常简单是非常好的准则。
您还可以在MSDN上找到代码分析,当层次结构超过4级时会设置警告:
CA1501: Avoid excessive inheritance
<强>原因强>
一个类型在其继承层次结构中超过四个级别。
答案 2 :(得分:3)
据我所知,没有明确的限制,但我会说保持4-6或最多单个深度数字,不再会产生不必要的复杂性 - “让事情尽可能简单,不简单” - 爱因斯坦。
以下是您可能会发现有用的链接:
http://blogs.msdn.com/b/zainnab/archive/2011/05/19/code-metrics-depth-of-inheritance-dit.aspx
快乐编码
答案 3 :(得分:1)
我认为没有真正的限制。