日期:2014-05-18  浏览次数:21264 次

定义一个范形的方法,为什么要在方法名的最后加上<T>,求指教
比如说定义一个这样的范形方法: public static void ForEach2<T>(this List<T> list, Action<T> action){//函数体}
为什么要在方法名的后面加上<T>,只是个方法名而已,不是取什么都可以吗?为什么不能这样定义:
public static void ForEach2(this List<T> list, Action<T> action){//函数体}
谁能告诉我一下,谢谢了,这里有点想不明白,我知道会报错,但是原理是什么呢?

------解决方案--------------------
函数名是ForEach2
<T>是对类型参数的声明
因为函数声明了类型参数,所以它是一个泛型函数。

你后面那种不声明类型参数的语法明显很混乱
List<T>:编译器怎么知道T是一个类型参数还是一个你写错了名字的实际类型呢?对代码阅读者来说就更混乱了。
也就是没有显式地将泛型函数和非泛型函数区分开来。

------解决方案--------------------
定义 就是这样...
有啥想不明白的呢
那 A==B?1:2;你能想明白么?
------解决方案--------------------
参考C++类模板
T是类的指代,用于指定该方法所要用到的类型。 public static void ForEach2(this List<T> list, Action<T> action){//函数体} 这里需要的是指明的类型,要明确。