惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
博客园_首页
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
A
About on SuperTechFans
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
月光博客
月光博客
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
C
Check Point Blog
V
V2EX
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Security Blog
Microsoft Security Blog

博客园 - 数迹

1.winform中App.config配置mssql连接字符串 1.params 关键字 1.创建实体类UserInfo 1. UserInfo表的创建 3.SqlCommand组件 2.在DbHelper.cs 中使用连接字符串 事件委托1 多播委托 委托总结:委托提供了 A类的对象 调用 B类对象的同一类方法 的能力。 委托3--委托声明比较 委托2 文心快码 委托1 sql提示注册表中无 \100\ConfigurationState的解决方法 - 数迹 - 博客园 安装SQL server 提示重新启动计算机失败怎么解决 DataGridView插入指定类型的列 菜单制作过程笔记1 ${pagecontext.request.contextpath}绝对路径理解 eclipse中修改JSP模板中的默认编码 hibernate的ddl-auto属性
where关键字
数迹 · 2026-02-17 · via 博客园 - 数迹

where在 C# 中用于为泛型(类、方法等)的类型参数添加约束,限制它必须满足的条件。

where的意思是“继承自” 不准确,它更准确的表述是 “必须满足……条件”​ 或 “受限于……”

常见约束:

where T : class→ T 必须是引用类型(如类、接口、数组)。

where T : struct→ T 必须是值类型(如 int、struct)。

where T : new()→ T 必须有无参构造函数。

where T : BaseClass→ T 必须继承自某个基类。

where T : ISomeInterface→ T 必须实现某个接口。

作用:

让你在泛型代码中安全地使用类型 T的特定功能(如调用方法、创建实例等)。

例子:

csharp
复制
public class Example<T> where T : class, new()
{
// 这里知道 T 是引用类型且有无参构造函数
public T CreateItem() => new T();
}

意思就是继承自是吧?

不完全是。

“继承自”只是其中一种情况,而 where约束的含义更广。

您可以这样理解: where T : XXX中的 :根据不同情况,可以读作不同的意思

约束

读作

含义

where T : class

T 必须是​ 类/引用类型

这是 类别​ 要求,不是继承。

where T : struct

T 必须是​ 结构/值类型

这是 类别​ 要求。

where T : new()

T 必须能​ 被 new T()构造

这是 能力​ 要求。

where T : BaseClass

T 必须继承自​ BaseClass

这才是 继承关系

where T : ISomeInterface

T 必须实现​ ISomeInterface 接口

这是 契约/实现​ 关系。

简单总结:

  • :后面是 一个具体的类名​ 时,意思才是 “继承自”

    • where T : Animal// T 必须继承自 Animal 类(比如 Dog, Cat)。

  • :后面是 class, struct, new()​ 这些关键字时,是 对类型本身的特性要求

  • :后面是 一个接口名​ 时,意思是 “必须实现”

    • where T : IDisposable// T 必须实现 IDisposable 接口。

所以,说 where的意思是“继承自” 不准确,它更准确的表述是 “必须满足……条件”​ 或 “受限于……”