C# 中密封类和静态类的区别

17 Mar 2025 | 4 分钟阅读

在本文中,我们将讨论 C# 中 Sealed 类和 Static 类之间的区别。但在讨论区别之前,我们必须了解 C# 中的 Sealed 类和 Static 类,包括它们的语法和示例。

C# 中的 Sealed 类是什么?

C# 中的 sealed class 是一个类,它会阻止继承。如果有两个类,一个父类和一个子类,并且父类被标记为 Sealed,则子类不能在子类中继承父类的属性和方法。这意味着 sealed 类不能用作父类或基类。

Sealed 类的语法

它具有以下语法:

当一个类被 sealed 时,它不能被扩展,因为它不允许继承。这意味着这个类在将来不能被修改。当程序员想要最终确定一个类时,就会使用这个 sealed 类。通过看到 sealed 类,编译器将避免运行时检查的开销,例如调用其他方法等。这使得类的执行速度更快。

示例

让我们看一个程序来说明 C# 中的 Sealed 类。

输出

Differences between the Sealed class and Static class in C#

说明

上面的程序有两个类:Vehicle 和 Program。这里,Vehicle 是 sealed 的,这意味着这个类的属性不能被其他类继承。在 Vehicle 类中,有一个名为 Drive 的方法,它会打印一些语句。有一段被注释掉的代码,其中另一个类 Car 正在尝试继承 Vehicle 类。它会抛出编译错误,说 sealed 类不能被继承。在注释掉那部分代码后,我们可以通过创建 Vehicle 类的对象来访问 Program 类中的属性。

C# 中的 Static 类是什么?

C# 中的 static class 是一个不能实例化的类。换句话说,程序员不能创建 static 类的对象或实例。它与普通类相同,但有一个主要区别是,我们不能创建这个 static 类的对象。

这个 static 类包含 static 成员和成员函数,这意味着变量或字段、事件、嵌套类型和方法都是 static 的。这些类主要用于定义不需要任何实例来访问这些 static 方法的实用函数。它们不能被继承。Static 类可以提供更好的运行时优化并减少内存开销,因为不会创建新的对象。

Static 类的语法

它具有以下语法:

示例

让我们看一个程序来说明 C# 中的 static class

输出

Differences between the Sealed class and Static class in C#

说明

上面的程序有两个类:MathHelper 类(它是 static 的)和 Main 类。MathHelper 类是 static 的,这意味着我们不能为该类创建对象。这个类只包含 static 方法。在 MathHelper 中,有两个方法:AddSubtract。在 Main 类中,通过使用 static 类名来访问 Add 方法,并将其存储在变量中。Subtract 方法也通过其类名进行访问。之后,两个结果都会被打印出来。

C# 中密封类和静态类的区别

Differences between the Sealed class and Static class in C#

Sealed 类和 Static 类在 C# 中有几个区别。C# 中 Sealed 类和 Static 类之间的一些主要区别如下:

Sealed 类和 Static 类在 C# 中有几个区别。C# 中 Sealed 类和 Static 类之间的一些主要区别如下:

特性Sealed 类Static 类
继承不能被继承。Static 类也不能被继承。
实例化我们可以为 sealed 类创建对象。无法为 static 类创建对象。
类中的成员Sealed 类的成员可以是 static 也可以是非 static 的。Static 类的成员、方法和属性必须是 static 的。
用途用于最终确定类。主要用于不需要对象的实用方法。
扩展名这些类不能进一步更改或扩展。它们不能被继承,并且其成员是共享的。
性能此类在运行时方面能提供更好的性能。此类在运行时和内存方面能提供更好的性能。
构造函数构造函数可用于初始化变量。由于消除了对象创建,因此这里不使用构造函数。
访问修饰符它可以为类的成员使用不同的访问修饰符。在这里,所有成员都应该是 static 的,访问修饰符也应该是相同的。
内存分配为 sealed 类的对象分配内存。不分配内存。
多态支持多态性。不支持多态性。