Примите следующее: у нас есть класс B, который является частным классом, вложенным в классе A. Нет никакого класса, наследовавшегося классу B. Вопрос: компилятор автоматически отметит класс B как Изолированный? (NonInheritable в VB). Есть ли какое-либо серьезное основание для компилятора для не маркировки класса B, как изолировано?
Мой ход мыслей - это: так как класс B вкладывается в классе A и частный, и нет никакого другого класса, наследовавшегося классу B, должно быть безопасно изолировать его, потому что он не может быть наследован вне класса A (даже подклассами A).
Class A
Private Class B
End Class
End Class
Компилятор не будет автоматически помечать этот тип как герметичный.
Правда, в этом очень специфическом сценарии нет никакой реальной пользы в том, чтобы оставить класс незапечатанным. Однако определить, что вы находитесь в этом сценарии, не всегда так просто. Необходимо учитывать следующее
Все это не невозможно вычислить, но и не тривиально. Гораздо дешевле попросить пользователя просто запечатать тип самостоятельно
Я не проверял, но полагаю, что он этого не сделает. В любом случае JIT может определить, может ли класс иметь потомков, так что я не ожидаю какой-либо разницы во время выполнения.