最近频繁的接触到泛型方面的问题,所以也不得不来学习一下了,开始主要是在MSDN的WebCast上去下载教学录象看的(李建忠老师的),本篇文章先介绍一下泛型入门方面的知识,希望能让刚开始学习泛型的朋友能够更快的入门,言归正传,首先我们来看一下泛型的基本概念。
最显著的一点就是它参数化了类型,把类型作为参数抽象出来,从而使我们在实际的运用当中能够更好的实现代码的重复利用,同时它提供了更强的类型安全,更高的效率,不过在约束方面,它只支持显示的约束,这样在灵活性方面就显得不是那么好了。我觉得它之所以能够提供更高的效率是因为泛型在实例化的时候采用了”on-demand”的模式,即按需实例化,发生在JIT(Just In Time)编译时。
下面来看如何定义一个泛型类,很简单,你只需要意识到一点,在这里,类型已经被参数化了:
\n
using System;
using System.Collections.Generic;
using System.Text;
namespace GenericTest
{
class Program
{
static void Main(string[] args)
{
//使用string,int来实例化Test<T,S>类
Test<string, int> t = new Test<string, int>(“SHY520″,22);
//调用泛型类中的方法
t.SetValue();
}
}
/**//// <summary>
/// 定义一个泛型类,该类有两个类型参数,分别是T,S
/// http://pw.cnblogs.com
/// </summary>
/// <typeparam name=”T”>类型参数</typeparam>
/// <typeparam name=”S”>类型参数</typeparam>
public class Test<T,S>
{
//泛型类的类型参数可用于类成员
private T name;
private S age;
public Test(T Name,S Age)
{
this.name = Name;
this.age = Age;
}
public void SetValue()
{
Console.WriteLine(name.ToString());
Console.WriteLine(age.ToString());
}
}
}\n
using System.Collections.Generic;
using System.Text;
namespace GenericTest
{
class Program
{
static void Main(string[] args)
{
//使用string,int来实例化Test<T,S>类
Test<string, int> t = new Test<string, int>(“SHY520″,22);
//调用泛型类中的方法
t.SetValue();
}
}
/**//// <summary>
/// 定义一个泛型类,该类有两个类型参数,分别是T,S
/// http://pw.cnblogs.com
/// </summary>
/// <typeparam name=”T”>类型参数</typeparam>
/// <typeparam name=”S”>类型参数</typeparam>
public class Test<T,S>
{
//泛型类的类型参数可用于类成员
private T name;
private S age;
public Test(T Name,S Age)
{
this.name = Name;
this.age = Age;
}
public void SetValue()
{
Console.WriteLine(name.ToString());
Console.WriteLine(age.ToString());
}
}
}\n