/*
泛型方法
泛型方法不需要定义在泛型类中
泛型方法也是可以重载的,如果一个方法有泛型版本和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>
{
}
}