如果类的接口是逆变的,那么使用泛型引用类型参数有什么好处吗?

Pav*_*nin 5 c# generics

考虑这个课程:

class MyClass<T> where T: class // or T: BaseClass
{
    void DoSomething1(T arg){ ... }
    void DoSomething2(T arg){ ... }
    ...
    void DoSomethingN(T arg){ ... }
}
Run Code Online (Sandbox Code Playgroud)

没有T价值回报!即使在受保护的财产或领域,所以后代也不能返回T.

与刚刚硬编码的基类类型相比,在这里使用泛型参数是否有任何优势?

Sea*_*ean 0

不,没有任何优势。由于您只传递类型的参数,T因此您的方法本质上是逆变的,因此您不妨将它们声明为采用BaseClass引用而不是T