在 C# 和 C++/CLI 中,关键字 sealed
(或 VB 中的 NotInheritable
)用于保护类免受任何继承机会(该类将是不可继承的) ).我知道面向对象编程的一个特性是继承,我觉得 sealed
的使用违背了这个特性,它停止了继承。
是否有示例显示 sealed
的好处以及何时使用它很重要?
最佳答案
在实现安全功能的类上,这样就不能“模拟”原始对象。
更一般地说,我最近与 Microsoft 的一个人交流,他告诉我他们试图将继承限制在真正完全有意义的地方,因为如果不加以处理,它会在性能方面变得昂贵。
sealed 关键字告诉 CLR 没有类进一步向下寻找方法,这加快了速度。
在当今市场上的大多数性能增强工具中,您会发现一个复选框,用于密封所有未继承的类。
不过要小心,因为如果您希望通过 MEF 允许插件或程序集发现,您将会遇到问题。
关于c# - 你什么时候、为什么要封课?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777611/