. net本身有不能被继承的类吗?

本文关键字:继承 不能 net | 更新日期: 2023-09-27 18:11:54

我很想知道是否有c#的样本。我想不出一个单独的例子来禁止继承,而不是出于一些商业目的,所以我想知道c#本身的一些真实世界的例子。

我知道密封类,我只是在寻找c#本身的一些例子,而不是隐式密封的值类型和结构体。

. net本身有不能被继承的类吗?

是的。所有的类都是sealed,它们不能被用作基类。

关于sealed课程的更多信息,请点击这里。

.NET中sealed类的例子如下:

  • 系统。字符串
  • System.Data.SqlClient.SqlCommand
  • System.Net.HttpListener

不能继承任何结构体、sealed类或static类。c#还禁止使用一些"特殊"类型,包括DelegateEnum,因为它提供了使用这些类型的其他结构。

我想到的最明显的例子是System.String

如果你想继承它,像这样:

public class CustomString : String { }

你会看到这个错误:

'CustomString':不能从密封类型'string'派生

在。net框架中还有许多的例子。我使用反射做了一个快速比较,仅在mscorlib (v4.0)中就有856个密封公共类型,而非密封公共类型(包括接口)有619个。

除了sealed类,static类也不能被继承,详见。例如:System.Linq.Enumerable .

public static class Inherited : System.Linq.Enumerable
{
}

这个也不工作。