首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密封类性能

密封类性能
EN

Stack Overflow用户
提问于 2013-03-17 13:45:34
回答 2查看 500关注 0票数 2

我读过有关sealed类的文章,知道密封类不能被继承。

如果我在不需要从密封类继承的情况下用sealed来装饰类,我会获得更高的性能吗?

代码语言:javascript
复制
// cs_sealed_keyword.cs
// Sealed classes
using System;
sealed class MyClass 
{
   public int x; 
   public int y;
}

class MainClass 
{
   public static void Main() 
   {
      MyClass mC = new MyClass(); 
      mC.x = 110;
      mC.y = 150;
      Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y); 
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-17 14:36:21

曾几何时,在面向对象的早期,非虚拟方法通过避免vtable访问提供了显著的性能优势。然而,如今,sealed修饰符背后的基本原理更多地是关于设计选择,控制客户端代码如何与您的库交互。

正如标记方法private可以保留实现细节以备将来改进一样,标记类sealed可以保证(除非有可疑的反射恶作剧)库的用户无法通过不明智的子类化实现,以意想不到的、可能是灾难性的方式将代码插入到调用图中。

这在安全情况下尤其重要,在这种情况下,严格控制的类结构可能会被单个入侵者子类完全取消。因此,您将在System.Security名称空间中找到大量的密封类。

票数 2
EN

Stack Overflow用户

发布于 2013-03-17 13:52:58

使用密封修饰符时,性能会有很小的提高。编译器在最低级别执行微优化。

JIT编译器可以通过非虚拟方式调用该方法来生成更高效的代码

另请查看此Thread

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15457938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档