摘要: 我们在编写程序的时候,经常遇到两个模块的功能非常相像,只是一个是处理int类型,另一个是处理string类型,或者是其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一个办法,在方法中传入通用的数据类型,这样就可以合并代码了。泛型的出现正是为解决这个问题的。 为什么要使用泛型为了了解这个问题,我们先看下面的代码,代码中省略了一些内容,但功能是实现一个栈,这个栈只能处理int数据类型:public class Stack{ private int[] m_item; public int pop() {} public void push(i 阅读全文
posted @ 2012-11-09 17:50 水月小妖 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 转载的 经常听说,并且经常在书上看到:值类型部署在栈上,引用类型部署在托管堆上。实际上并没有这么简单。 MSDN上说:托管堆上部署了所有引用类型。这很容易理解。当创建一个应用类型变量时:1.objectreference=newobject(); 关键字new将在托管堆上分配内存空间,并返回一个该内存空间的地址。左边的reference位于栈上,是一个引用,存储着一个内存地址;而这个地址指向的内存(位于托管堆)里存储着其内容(一个System.Object的实例)。下面为了方便,简称引用类型部署在托管推上。 再来看值类型。《C#语言规范》上的措辞是“结构体不要求在堆上分配内存(However, 阅读全文
posted @ 2012-11-09 15:44 水月小妖 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 转载的,保存在此以备查看所属命名空间:System.Collections.GenericpublicclassList<T> :IList<T>,ICollection<T>,IEnumerable<T>,IList,ICollection,IEnumerableList<T>类是ArrayList类的泛型等效类。该类使用大小可按需动态增加的数组实现IList<T>泛型接口。泛型的好处:它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到 阅读全文
posted @ 2012-11-09 15:42 水月小妖 阅读(187) 评论(0) 推荐(0) 编辑