C# Sealed2025 年 9 月 8 日 | 阅读 6 分钟 C# 的 sealed 关键字用于对类和方法施加限制。如果我们创建一个 sealed 类,它就不能被继承。如果我们创建一个 sealed 方法,它就不能被重写。它通常用于防止类被不希望地扩展,并确保某些方法在派生类中不被修改。 注意:结构体(Structs)是隐式 sealed 的,因此不能继承它们。C# Sealed 类在 C# 编程语言中,sealed 类是一个不能被任何其他类继承的类。当我们使用 sealed 关键字创建 sealed 类时,我们可以有效地锁定该类,没有人可以从它继承新类。 当知道没有其他类会需要更改 sealed 类的行为,或者当我们需要通过消除运行时检查继承的开销来优化性能时,sealed 类很有用。 语法它具有以下语法: 在这个语法中,
未使用 sealed 类的 C# Sealed 类示例让我们举例说明 C# 中未使用 sealed 关键字的 sealed 类。 示例编译并运行输出 Compile Time Error: 'Dog': cannot derive from sealed type 'Animal' 说明 在此示例中,我们将尝试声明一个具有 eat 方法的 sealed 类 Animal,但由于 sealed 类不能被继承,Dog: Animal 将导致编译器错误。如果未使用 sealed 关键字,它将允许 Dog 继承 eat() 以及它的 bark() 方法,由 Main 调用。 使用 Sealed 类的 C# Sealed 示例让我们举例说明 C# 中的 sealed 类。 示例编译并运行输出 Car started with a key. 说明 在此示例中,我们声明了一个基类 Vehicle,其中包含一个虚拟的 Start 方法,以及一个 sealed 类 Car,它重写了这个虚拟方法。在 Main 中,Car 对象调用其 Start 方法,输出“Car started with a key.”。由于 Car 是 sealed 的,因此没有类可以继承它。 何时使用 Sealed 类?我们可以在不同的上下文中使用 sealed 类。其中一些如下:
C# Sealed 方法在 C# 编程语言中,sealed 方法不能在派生类中被重写。它与 override 关键字一起使用。只有当一个方法重写了一个基类方法时,它才能被 sealed。除非一个方法被重写,否则不能对其应用 sealed 关键字。 语法 它具有以下语法: C# 中的 sealed 方法不能进一步被重写。它必须与方法中的 override 关键字一起使用。 使用 sealed 关键字和方法来阻止重写的 C# Sealed 示例让我们看一个例子来说明 C# 中的 sealed 方法。 示例编译并运行输出 Compile Time Error: 'BabyDog.run()': cannot override inherited member 'Dog.run()' because it is sealed 说明 此示例将无法编译,因为 Dog 已将 run() 方法 sealed,BabyDog 不能重写它。如果 BabyDog 中的 run() 重写被取消注释,它将继承 Dog 的 run() 方法并输出“eating biscuits...”后跟“running very fast...” 注意:局部变量不能是 sealed 的。在 C# 中对局部变量使用 sealed 的无效示例让我们举例说明在 C# 中对局部变量使用 sealed 的无效用法。 示例编译并运行输出 Compile Time Error: Invalid expression term 'sealed' 说明 此示例将无法编译,因为 C# 不支持将 sealed 关键字与 int x 等局部变量一起使用。sealed 仅适用于类或方法重写,而不适用于原始变量。 C# Sealed 示例:密封重写的方法以限制进一步重写让我们举例说明如何在 C# 中密封重写的方法以限制进一步重写。 示例编译并运行输出 Manager is managing the team Project Manager is planning tasks 说明 在此示例中,我们定义了一个具有虚拟 Work 方法的 Employee 类,并在一个 sealed 的 Manager 类中重写它以防止进一步修改,并在 ProjectManager 类中引入了一个 Plan 方法。在 Main() 函数中,ProjectManager 实例调用 Work(来自 Manager)和 Plan。 C# Sealed 的特性C# Sealed 有几个特性。其中一些如下:
结论总之,C# sealed 用于通过不允许其他类继承 sealed 类或防止 sealed 方法被进一步重写来限制继承。它有助于维护类的设计的完整性,防止其实现被修改。它还可以提供性能优势,因为运行时知道该类型不能被扩展。 sealed 类是 final 的,不能是抽象的,而 sealed 方法是在派生类中重写但不能在后续子类中再次重写的方法。 C# Sealed 常见问题解答1)C# 中的 sealed 关键字是什么? 在 C# 编程语言中,sealed 关键字用于防止类被继承或方法被重写。它可以用于类、方法和属性。 2)在 C# 中可以实例化一个 sealed 类吗? 在 C# 中,sealed 类可以像普通类一样被实例化;但是,它们不能作为其他类的基类。 3)sealed 类的成员可以被重写吗? 如果一个方法在基类中被声明为 virtual,派生类可以正常重写它。如果派生类 sealing 了该方法,则后续的子类就不能重写它。 4)在 C# 中是否可以 sealing 一个方法? 是的,方法可以被 sealing,但前提是它是对虚拟方法的重写。sealing 一个重写的方法可以阻止在派生类中进一步重写。 5)sealed 与 C# 中的 static 相关吗? 不,静态类和 sealed 类是不同的。静态类是自动 sealed 的,但 sealed 类不必是静态的。 |
我们请求您订阅我们的新闻通讯以获取最新更新。