关于范型介绍的最后一部分是范型方法。
有时候我们并不是整个类都需要参数类型,而只是一个特定的方法需要。
比如我们有这样一样方法:
void
PushMultiple(Stack
<
int
>
stack,
params
int
[] values)
{
foreach (int value in values) stack.Push(value);
}
容易知道,这个方法的作用就是把多个int值放入一个堆栈里,但是目前我们只能放入int值,就像这样:
Stack
<
int
>
stack
=
new
Stack
<
int
>
();
PushMultiple(stack,
1
,
2
,
3
,
4
);
当然现在我们只能放入整型,根据前面对范型的介绍,我们容易想到把Stack<int>写成Stack<T>就可以接受参数类型了,所以我们就把方法改为范型方法:
void
PushMultiple
<
T
>
(Stack
<
T
>
stack,
params
T[] values)
{
foreach (T value in values) stack.Push(value);
}
![None.gif](/Images/OutliningIndicators/None.gif)
如果我们想用这个范型方法达成前面的方法的效果,就这样用:
Stack
<
int
>
stack
=
new
Stack
<
int
>
();
PushMultiple
<
int
>
(stack,
1
,
2
,
3
,
4
);
当然,现在我们已经不局限于放入int值到堆栈里了,你可以指定自己需要的类型,可重用性就更高了。
其实我们的编译器还可以更聪明一点,它使用了一种叫type inferencing的操作,根据我们提供的方法的参数的类型来推演出方法的参数类型,也就是说,我们上面的例子可以写成这样:
Stack
<
int
>
stack
=
new
Stack
<
int
>
();
PushMultiple(stack,
1
,
2
,
3
,
4
);