代码之家  ›  专栏  ›  技术社区  ›  M.A. Hanin

私有类在编译时是否被密封?

  •  5
  • M.A. Hanin  · 技术社区  · 15 年前

    假设如下:我们有一个类B,它是一个嵌套在类A中的私有类。没有任何类继承自类B。问题是: 编译器会自动将B类标记为sealed吗? (vb中不可遗传)。编译器有什么理由不将B类标记为密封的吗?

    我的想法是这样的:因为B类嵌套在A类中并且是私有的,并且没有从B类继承的其他类,所以应该安全地密封它,因为它不能在A类之外继承(甚至不能由A的子类继承)。

    Class A
        Private Class B  
        End Class
    End Class
    
    2 回复  |  直到 15 年前
        1
  •  7
  •   JaredPar    15 年前

    编译器不会自动将此类型标记为sealed。

    在这个非常具体的场景中,没有真正的价值让类保持未密封状态。然而,确定你在这种情况下并不总是那么容易。你得考虑一下

    • 类型是私有的
    • 必须考虑部分类的存在
    • 其他私有嵌套类型可以继承。

    这些并非无法计算,但也并非微不足道。要求用户自己密封字体要便宜得多

        2
  •  1
  •   Lucero    15 年前

    我没有查,但我想它不会查的。无论如何,jit可以决定一个类是否可以有子类,这样我就不会期望在运行时有任何差异。