news 2026/9/2 15:36:52

C#五种泛型约束

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#五种泛型约束

五种泛型约束

1.where T : struct

  • 作用:强制泛型只能是值类型(int、bool、struct)
  • 特性:值类型默认不允许赋值null

2.where T : class

  • 作用:强制泛型只能是引用类型(自定义类、string、接口)
  • 特性:变量可以赋值为null

3.where T : new()

  • 作用:要求类型必须具备无参构造函数
  • 限制:抽象类、只存在带参构造的普通类无法满足该约束;
  • 用途:可以在泛型内部使用new T()实例化对象。

4. 基类约束where T : 父类名称

publicclassRepository<T>whereT:BaseEntity

约束含义:T必须是BaseEntity的子类。

之前代码能够直接书写entity.Id的根本原因:编译器通过约束判定 T 继承 BaseEntity,必然包含 Id 属性。

5. 接口约束where T : 接口名称

publicinterfaceIHasName{stringName{get;set;}}publicclassDemo<T>whereT:IHasName{}

要求泛型类型必须实现指定接口。

多约束叠加规则

多个约束为并且 (&&)关系,必须全部满足,书写顺序固定不可打乱:

基类(父类)约束 → 接口约束 → class/struct → new() ```csharp // 示例:T继承BaseEntity、实现2个接口、属于引用类型、有无参构造 public void Save<T>(T entity) where T : BaseEntity, IHasName, ILog, class, new() { }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 15:31:24

双机DGX Spark vs M5 Ultra:本地AI部署底座选型全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 15:29:52

nRF Sniffer抓包实战:从固件烧录到Wireshark分析BLE协议

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 15:26:18

MiniMax H3开源短剧工作流:从人脸一致性到分镜拼接

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 15:25:49

墨绿色高级商务风:论文开题报告PPT制作全攻略

又到了开题季&#xff0c;我猜你最近正在为论文开题报告发愁。打开 PPT 模板网站&#xff0c;搜索“开题报告”&#xff0c;会得到上万条结果&#xff0c;但大多数只有两个走向&#xff1a;要么像十年前的教学课件&#xff0c;要么过度设计&#xff0c;五颜六色压不住台面。很多…

作者头像 李华
网站建设 2026/9/2 15:22:27

Modbus 调试工具(Qt Widgets + Modbus)

# Modbus 调试工具(Qt Widgets + Modbus) ## 项目概述 - 技术栈:**Qt Widgets + Qt Modbus** - 运行平台:统信UOS / 银河麒麟(x86_64 / ARM) - 用途:工业现场 Modbus RTU/TCP 设备调试、寄存器读写、线圈/离散量操作、通信参数配置、日志查看 - 复杂度:中等,同时支持 …

作者头像 李华
网站建设 2026/9/2 15:19:28

Vibe Coding不是提示词竞赛,工程规范才是关键

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华