讲师中心 微信公众号
AI工具推荐 视频效率加速

c# sealed 关键字的作用

雨明吖_1244

雨明吖_1244

发布时间:2026-01-20 12:37:32

|

331人浏览过

|

来源于php中文网

原创

sealed修饰类可阻止继承,编译期报错;修饰方法需配合override,仅禁止进一步重写;用于工具类、敏感逻辑、值对象等场景,提升性能并明确设计意图。

c# sealed 关键字的作用

sealed 修饰类:阻止继承,编译期就报错

加了 sealed 的类,别人一写 class B : A 就直接编译失败,错误信息是:'B' cannot inherit from sealed class 'A'。这不是运行时检查,而是编译器提前拦截,完全杜绝派生可能。

  • 适用场景:工具类(如 JsonSerializer 封装)、敏感逻辑类(如密码哈希器)、值对象(UserIdentity)——你不想让任何人通过继承绕过校验或篡改行为
  • 性能影响:JIT 编译器对 sealed 类的虚方法调用可做去虚拟化(devirtualization),调用更快;反射查找成员也略快(因无需遍历继承链)
  • 常见误用:和 abstract 同时出现 → 编译错误,二者语义冲突(一个强制被继承,一个禁止被继承)

sealed 修饰方法:必须配合 override,只封“这一层”的重写权

sealed 不能单独用于方法,它必须和 override 成对出现,作用是:允许子类继承当前类,但禁止子类再重写这个已被密封的方法。

jm-jsjkxyjs02-pzl-803
jm-jsjkxyjs02-pzl-803

查询全球任意城市的实时天气和未来天气预报

下载
public class A
{
    public virtual void DoWork() => Console.WriteLine("A");
}

public class B : A
{
    public sealed override void DoWork() => Console.WriteLine("B (sealed)");
}

public class C : B
{
    // ❌ 编译错误:'C.DoWork()' cannot override inherited member 'B.DoWork()' because it is sealed
    // public override void DoWork() => Console.WriteLine("C");
}
  • 典型用途:在框架基类中开放部分可定制点,但关键流程节点(如 ValidateInput()、EncryptPayload())必须由你控制实现,不许下游覆盖
  • 注意:密封的是“重写行为”,不是“调用权限”——C 仍能调用 B.DoWork(),只是不能改它
  • 如果父类方法没声明 virtual 或 abstract,子类里用 new 隐藏它,那根本不需要、也不能加 sealed

为什么 string、DateTime 是 sealed 的?这不只是“设计选择”

.NET 基础类型大量使用 sealed,不是为了“炫技”,而是防止破坏契约:

  • string 密封 → 避免有人继承后偷偷改 Length 或 == 行为,导致 LINQ、JSON 序列化等底层逻辑出错
  • DateTime 密封 → 确保其不可变性(immutability)不被子类通过重写 AddDays() 等方法破坏
  • 结构体(struct)默认就是隐式 sealed,所以你连写 sealed struct S { } 都会报错

容易被忽略的细节:sealed 不等于 private,也不影响接口实现

sealed 只管“能不能被继承”,不管“能不能被访问”或“能不能实现接口”:

  • 一个 public sealed class Logger : ILogger 完全合法 —— 外部代码可以 new 它、调用它、传给依赖 ILogger 的方法,只是不能从它派生
  • sealed 类里的成员访问修饰符照常生效:private sealed void Helper() 是语法错误(sealed 不能修饰成员方法,只能修饰类或 override 方法)
  • 别指望靠 sealed 防止反序列化构造实例 —— JsonSerializer.Deserialize<SealedClass>() 依然可行,它不走 new,而是绕过构造函数直接填充字段
sealed 的真正价值不在“锁死代码”,而在明确传达设计意图:这里不欢迎定制,请按契约使用。一旦滥用,比如把本该扩展的策略类提前密封,后续维护时就得重构接口或引入委托回调——比继承还难懂。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

1975

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2702

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

936

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3019

2025.09.10

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5259

2023.08.02

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

3994

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

4151

2025.07.04

javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

616

2023.11.23

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

80

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 20.5万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn