You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为泛型函数的类型参数T添加继承约束?

泛型方法中实现类型参数继承约束的正确写法

嘿,我懂你的困惑啦!你在类/接口声明里用的那种类型约束写法,放到泛型方法里确实得调整语法位置——你写的T where T:A是无效的,C#里泛型方法的约束是放在方法参数列表之后的,不是跟在类型参数<T>后面哦。

正确的语法示例

把你的代码改成下面这样就可以正常工作了:

class A { int x; }
class B : A { }
void Something<T>(T item) where T : A 
{ 
    Console.WriteLine(item.x); 
}

简单解释

  • 类型参数<T>还是放在方法名后面,保持原来的位置
  • 约束条件where T : A移到方法的参数列表圆括号()之后,这样编译器就能正确识别:你要求泛型类型T必须是A类本身,或者A的子类(比如你的B类)

这样调整后,你在方法里访问item.x就完全没问题了,编译器会确保传入的T类型一定包含x成员。比如你调用Something(new B())是完全合法的,因为B继承自A。

内容的提问来源于stack exchange,提问作者Yahav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 07:07:58