泛型方法
/* 泛型方法 泛型方法不需要定义在泛型类中 泛型方法也是可以重载的,如果一个方法有泛型版本和int类型版本,那么能在编译期间确认的版本会优先调用那个类型的版本,然后再选择泛型版本。 */ using System; using System.Collections.Generic; namespace Frank { public class Test { public static void Main(string[] args) { int a = 5; Test t = new Test(); t.Get<int>(a);//调用泛型方法,如果传的类型与定义的不一样就会编译错误 t.Get(15);//调用泛型可以省去<>,编译器自定识别类型 t.Set<int>(new Test2<int>());//完整写法 t.Set(new Test2<int>());//可以自动推断类型 } //定义一个泛型方法 public void Get<T>(T t1) { System.Console.WriteLine(t1); } public Test() { } //定义一个有约束的泛型方法 public void Set<T>(Test2<T> val) where T : new() { } //定义一个如果传递泛型委托的泛型方法 //调用该方法的时候需要指定类型,因为编译器无法自动推断类型. public T2 Show<T1,T2>(IEnumerable<T1> source,Func<T1,T2,T2> action) { T2 sum = default(T2); return sum; } } public class Test2<T> { } }