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

如何在C#中定义泛型T实现IComparable<T>且继承IEnumerable<T>的接口?

Java LinkedList接口的C#等价实现

你之前的写法错误在于把接口继承和泛型参数约束搞混了。

Java代码interface LinkedList<T extends Comparable<T>> extends Iterable<T>包含两层核心逻辑:

  1. 泛型参数T必须实现Comparable<T>(对应C#的IComparable<T>)
  2. LinkedList这个接口本身要继承Iterable<T>(对应C#的IEnumerable<T>)

而你写的where T : IComparable<T>, IEnumerable<T>,是要求泛型T同时实现IComparable<T>和IEnumerable<T>,这完全偏离了原Java代码的意图。

正确的C#写法应该把接口继承放在接口定义后面,泛型约束放在where子句里:

public interface LinkedList<T> : IEnumerable<T>
    where T : IComparable<T>

这样就完美对应了原Java代码的逻辑:LinkedList<T>接口本身支持迭代(实现IEnumerable<T>),同时要求泛型参数T必须具备比较能力(实现IComparable<T>)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:27:05