在Generic中实现接口时,为什么不必实现方法
public interface IMyTest<T>
{
T Add(T i, T j);
}
public class MyContainer<T> where T : IComparable<T>, IMyTest<T>
{
}
答案 0 :(得分:14)
您没有实现该界面。您说为类型参数T
提供的类型参数必须本身实现该接口。这就是where T
部分的含义 - 它在T
上指定约束。
这意味着在您的MyContainer
课程中,您可以使用界面的成员:
public class MyContainer<T> where T : IComparable<T>, IMyTest<T>
{
public T SumBiggestAndSmallest(IEnumerable<T> items)
{
var ordered = items.OrderBy(x => x)
.ToList();
return ordered.First().Add(ordered.First(), ordered.Last());
}
}
(目前还不清楚为什么Add
方法采用两个T
值,以及作为实例方法,但这是另一回事。)
如果没有T
的约束,您就不会有Add
方法来调用。