A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄冉 中级黑马   /  2012-12-3 07:07  /  1124 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在我们写C#程序的时候经常遇到这样的问题。我们会写很多重复的代码。为什么说是重复的呢。比如说,因为我们用不同的函数去实现同一个功能,虽然实现的功能一样,但是由于参数的数据类型不同。所以我们有必要要重写。比如
public class A  
{  
   private int[] m;  
   public int pop() {}  
   public void push(int b) {}  
   public A(int i) {this.m = new int[i]; }  
}

上面这段代码用来实现一个栈的功能。但是它也只能够处理int类型的数据。如果要处理string类型的数据我们就要将里面的Int替换为string。
当然我们也想到用object这个通用类型。但是这样做的话,会发现它在执行效率上不怎么好。也就是数据类型的转换,装箱与拆箱。
如果我们用泛型来重写。效果就不同了
public class A <T>
{
private T[] m;
public T pop() {}
public void push(T b) {}
public A(int i) {this.m = new T[i]; }
}
可以发现类的写法不变。只是将int ,string这些类型用通用类型T来替换。这样就可以适用与任何类型了。
A﹤int﹥ a = new Stack﹤int﹥(10);  
A<string> a=new A<string>(10)  
适用泛型的好处:
泛型无需装箱与拆箱,类型转换
泛型是类型安全的。也就是说如果我们实现了int类型的,就不可能接受其它类型的数据。

2 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
en bucuo {:soso_e142:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马