泛型方法

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

  

posted on 2013-11-25 16:48  wp456  阅读(160)  评论(0)    收藏  举报

导航