我读过有关sealed类的文章,知道密封类不能被继承。
如果我在不需要从密封类继承的情况下用sealed来装饰类,我会获得更高的性能吗?
// 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);
}
}发布于 2013-03-17 14:36:21
曾几何时,在面向对象的早期,非虚拟方法通过避免vtable访问提供了显著的性能优势。然而,如今,sealed修饰符背后的基本原理更多地是关于设计选择,控制客户端代码如何与您的库交互。
正如标记方法private可以保留实现细节以备将来改进一样,标记类sealed可以保证(除非有可疑的反射恶作剧)库的用户无法通过不明智的子类化实现,以意想不到的、可能是灾难性的方式将代码插入到调用图中。
这在安全情况下尤其重要,在这种情况下,严格控制的类结构可能会被单个入侵者子类完全取消。因此,您将在System.Security名称空间中找到大量的密封类。
发布于 2013-03-17 13:52:58
https://stackoverflow.com/questions/15457938
复制相似问题