class Sample<T> : IDisposable // case A
{
    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

class SampleB<T> where T : IDisposable // case B
{
}

class SampleC<T> : IDisposable, T : IDisposable // case C
{
    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

案例C是案例A和案例B的结合。这可能吗?
如何使案例 C 正确?

最佳答案

首先是实现的接口(interface),然后是由 where 分隔的泛型类型约束:

class SampleC<T> : IDisposable where T : IDisposable // case C
{        //                      ↑
    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

关于c# - 如何定义实现接口(interface)并约束类型参数的泛型类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6223075/

10-13 07:45