c# - 你什么时候、为什么要封课?

标签 c# .net oop c++-cli

在 C# 和 C++/CLI 中,关键字 sealed(或 VB 中的 NotInheritable)用于保护类免受任何继承机会(该类将是不可继承的) ).我知道面向对象编程的一个特性是继承,我觉得 sealed 的使用违背了这个特性,它停止了继承。 是否有示例显示 sealed 的好处以及何时使用它很重要?

最佳答案

  1. 在实现安全功能的类上,这样就不能“模拟”原始对象。

  2. 更一般地说,我最近与 Microsoft 的一个人交流,他告诉我他们试图将继承限制在真正完全有意义的地方,因为如果不加以处理,它会在性能方面变得昂贵。
    sealed 关键字告诉 CLR 没有类进一步向下寻找方法,这加快了速度。

在当今市场上的大多数性能增强工具中,您会发现一个复选框,用于密封所有未继承的类。
不过要小心,因为如果您希望通过 MEF 允许插件或程序集发现,您将会遇到问题。

关于c# - 你什么时候、为什么要封课?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777611/

相关文章:

c# - 如何检查字符串的前两个值

c# - 位图和位图数据的区别

c# - 将 IEnumerable 分组为一个字符串

c# - 在 SQL Server 数据库项目构建过程中使用了错误的编译器

c++ - 错误 C2440 '=' : cannot convert from 'cli::array<Type> ^' to 'wchar_t'

java - 面向对象设计: getter method (or object) visibility

c# - 预期的C#语法错误值

c# - 如何检查递归方法是否已经结束?

java - 如何向对象ArrayList添加多个值?

python - 使用MSS和OpenCV捕获监视器