5

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

我的思路是这样的:既然B类嵌套在A类内部并且是私有的,并且没有其他类继承自B类,那么封起来应该是安全的,因为它不能在A类之外继承(不是即使是 A) 的子类。

Class A
    Private Class B  
    End Class
End Class
4

2 回答 2

7

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

在这个非常具体的场景中,将课程保持为未密封状态并没有真正的价值。但是,确定您处于这种情况并不总是那么容易。您必须考虑以下几点

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

这些不是不可能计算出来的,但也不是微不足道的。要求用户自己密封类型要便宜得多

于 2010-03-25T19:49:04.007 回答
1

我没有检查,但我想它不会那样做。无论如何,JIT 可以确定一个类是否可以有后代,因此我不希望在运行时有任何差异。

于 2010-03-25T19:48:13.557 回答