使用泛型方法的目的,其中泛型是一些基础 class

The purpose of using generic methods where generic is some base class

在 T generic 是基础 class 的情况下使用泛型方法是否有任何目的?例如

class A: BaseClass
{
}

class B : BaseClass
{
}

class C
{
    public T test<T> (T aa) where T : BaseClass
    {
    
    }
}

为什么不直接这样写呢?

class C
{
    public BaseClass test (BaseClass aa)
    {
    
    }
}

是什么让我们在这种情况下具有通用性?

请注意您的方法 returnsT.

的一个实例

使用泛型,这是有效的:

A input = new A();
A output = c.test(input);

如果我们尝试对仅使用 BaseClass 的版本执行相同操作:

A input = new A();
A output = c.test(input); // Error: can not assign instance of 'BaseClass' to 'A'

这显然是因为 test returns BaseClass 的一个实例。相反,我们必须写:

A input = new A();
A output = (A)c.test(input);

... 我们没有任何编译时保证 test 实际上 returns 在这种情况下 A 的实例,而不是 [= 的实例19=].

您的(非泛型)变体返回一个 BaseClass 类型的对象,而泛型变体返回一个 T 是什么类型的对象(即 A 或 B 或 BaseClass)。