【发布时间】:2012-12-19 19:08:51
【问题描述】:
我对为什么/何时想要使用泛型方法感到有些困惑,因为非泛型方法可以访问其包含类的泛型成员并传递泛型参数。
所以,使用一个可能没有抓住重点的罐头示例(但强调了我问这个问题的原因),我为什么要这样做:
public class SomeGeneric<T>
{
public T Swap<T>(ref T a, ref T b)
{
T tmp = a;
a = b;
b = tmp;
}
}
结束
public class SomeGeneric<T>
{
public T Swap(ref T a, ref T b)
{
T tmp = a;
a = b;
b = tmp;
}
}
这个?
或者,真的,我为什么要使用通用方法?
【问题讨论】:
-
在大多数情况下,要么方法或类是通用的。很少两者兼而有之。在您的第一个示例中,这实际上是一个问题,因为 T 在类和方法定义之间不明确;它们应该有不同的名称,但从语义上讲,您不希望使用不同的类型。可能需要两个通用参数,一个在类,一个在方法级别,这只是......很少见。