IComparable<> 作为通用约束有什么特别之处

假设我有一堂课

Class Apple<T> where T: IComparable<int>{}

现在在为 Apple 创建一个对象时,我会这样做

Apple<int> obj = new Apple<int>();

上面的代码将起作用。

如果我用任何其他通用接口替换相同的代码,比如IComparer<>IEnumerable<>等等。像上面这样的对象创建将不起作用,我们必须像这样声明它

Apple<IEnumerable<int>> obj = new Apple<IEnumerable<int>>();

为什么会这样?为什么我声明的IComparable<>方式只适用于它而不适用于任何其他接口?


小唯快跑啊
浏览 68回答 1
1回答

慕森王

没有什么特别的IComparable<T>,但关于T它本身,它 - 在这种情况下int- 也实现了IComparable<int>。不过int肯定不会执行IEnumerable<int>。或者换句话说:您当然可以将eachint与另一个进行比较int。但是你不能迭代一个int.
打开App,查看更多内容
随时随地看视频慕课网APP