0

假设我有一堂课

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<>方式只适用于它而不适用于任何其他接口?

4

1 回答 1

6

没有什么特别的IComparable<T>,但关于T它本身,它 - 在这种情况下int- 也实现了IComparable<int>。不过int肯定不会执行IEnumerable<int>

或者换句话说:您当然可以eachint与另一个进行比较int。但是你不能迭代一个int.

于 2019-03-07T11:27:32.753 回答