C#泛型学习03--使用相应的泛型版本替换ArrayList
2012-03-01 23:48
381 查看
一、使用System.Collection.ArrayList对象的简单例子:
View Code
这个泛型方法有三个参数:
list 泛型List对象
obj 将被以指定次数添加进泛型List中的对象
count 把obj添加进泛型类中的次数
因为Clone方法也没有出现在泛型List类中(因为这个类并没有实现Icloneable接口),您可以使用泛型List类的GetRange方法做为替代。
GetRange方法对List对象中一个范围的元素执行浅拷贝(跟ArrayList中的Clone方法接近)。在此例中这个范围是所有元素。
提示:ArrayList 默认的初始容量是16个元素,而List<T>的默认初始容量为4个元素。这意味着当添加第17个元素时,List<T>不得不 改变尺寸(重新分配内存)3次,而ArrayList只重新分配一次。这一点在评估应用程序性能时需要被考虑。
View Code
public static void Repeat<T>(List<T> list, T obj, int count) { if (count < 0) { throw (new ArgumentException( "参数count 必须大于或等于零")); } for (int index = 0; index < count; index++) { list.Add(obj); } }
这个泛型方法有三个参数:
list 泛型List对象
obj 将被以指定次数添加进泛型List中的对象
count 把obj添加进泛型类中的次数
因为Clone方法也没有出现在泛型List类中(因为这个类并没有实现Icloneable接口),您可以使用泛型List类的GetRange方法做为替代。
List<int> oldList = new List<int>(); // 给oldList添加元素… List<int> newList = oldList.GetRange(0, oldList.Count);
GetRange方法对List对象中一个范围的元素执行浅拷贝(跟ArrayList中的Clone方法接近)。在此例中这个范围是所有元素。
提示:ArrayList 默认的初始容量是16个元素,而List<T>的默认初始容量为4个元素。这意味着当添加第17个元素时,List<T>不得不 改变尺寸(重新分配内存)3次,而ArrayList只重新分配一次。这一点在评估应用程序性能时需要被考虑。
相关文章推荐
- C#泛型学习03--使用相应的泛型版本替换Stack和Queue
- 您希望通过将所有ArrayList对象替换为相应的泛型版本以提高应用程序的效率,并使得代码更易于使用。当结构体或其他值类型存储在这些数据结构中时,会导致装箱/拆箱操作,这时就需要这么做。
- 泛型系列<9>:使用相应的泛型版本替换Hashtable
- 泛型系列<4>使用相应的泛型版本替换Stack和Queue
- 通过代码学习C#&.NET——委托使用(正则表达式替换)
- 在Android Studio使用Git实现版本管理(三):Android Studio的相应设置
- java 集合学习笔记2-ArrayList LinkedList Vector 泛型 增强for 可变参数
- 《Effect C++》学习------条款03:尽可能使用const
- ExtJs学习篇---ExtJS 3.0以上版本在eclipse中使用spket插件设置自动提示的方法
- 【EF学习笔记03】----------使用原生Sql语句
- Ilist 的深入学习和ArrayList中Cast<>的使用
- 安卓学习笔记---使用AndroidStudio出现的问题错误(错误: -source 1.6 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算)
- Docker学习(一)Ubuntu版本的Docker安装和使用
- android 如何使用手机厂商封装系统相应版本的样式
- 持续集成篇_03_svn版本管理系统的使用(centos+subversion+apache+jsvnadmin+tortoisesvn)
- (cc)2.6版本Linux上替换系统调用函数实现隐藏文件学习
- Android源码学习 使用Git和Repo进行版本管理
- Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例
- 学习effective java-23泛型之在新代码中不要使用原生类型
- 学习使用ArrayList