在Generic中实现接口时,为什么不必实现这些方法

Bab*_*amy 1 c# generics

在Generic中实现接口时,为什么不必实现这些方法

public interface IMyTest<T>
{
    T Add(T i, T j);
}

public class MyContainer<T> where T : IComparable<T>, IMyTest<T> 
{

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 14

你没有实现这个界面.您说为type参数提供的type参数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());
    }
}
Run Code Online (Sandbox Code Playgroud)

(目前还不清楚为什么你的Add方法需要两个T值,以及作为一个实例方法,但这是另一回事.)

没有约束T,你就没有Add方法可以调用.