.NET中常用的知识点--数组、ArrayList和List的区别
2017-02-20 17:21
218 查看
数组、List和ArrayList的区别:1. 数组概述:数组是一种数据结构,包含同一类型的多个元素。 优点: 数组在内存中是连续存储的,所以它的索引速度非常快,而且赋值和修改元素也很简单:
//初始化
string[] s=new string[3]; //赋值 s[0]="a"; s[1]="b"; s[2]="c"; //修改 s[1]="b1";缺点: 声明数组是,必须同时指明数组的长度。 数组长度过长,会造成内存浪费,数组长度过短,会造成数据溢出的错误。 所以在不确定数组长度的情况下,就需要用到ArrayList了。2.ArrayList概述:ArrayList是.net Framework提供的用于数据存储和检索的专用类。 命名空间:System.Collections下的一部分。 继承接口:IList接口。 优点:大小按照其中存储的数据来动态扩充与收缩,灵活方便。 声明时不需要指定它的长度。
//声明
ArrayList list = new ArrayList(); //新增数据 list.Add("abc"); list.Add(123); //修改数据 list[2] = 345; //移除数据 list.RemoveAt(0); //插入数据 list.Insert(0, "hello world");缺点:ArrayList会把所有插入其中的数据都当做object类型来处理。 ArrayList是类型不安全的。比如:在我们插入值类型1,2,3后,再在后边插入引用类型‘a’,'b','c',会报类型不匹配的错误。 性能损失很大。比如:我们在插入同一类型的数据时,ArrayList还是会见他们转化为object类型,这就存在了装箱与拆箱的操作,会带来很大的性能损耗。 所以需要用到List.3. List概述:List类似ArrayList类的泛型等效类。 List是一个具体的实现类。 继承了IList接口。 声明时需要为其声明List集合内数据的对象类型。如:List<int> lsstr=new List<int>(); List不能被构造。 优点:类型安全:
//声明
List<int> list = new List<int>(); //新增数据 list.Add(123); //修改数据 list[0] = 345; //移除数据 list.RemoveAt(0);上例中。如果我们往List<int> 集合中插入string字符‘hello‘,IDE就会报错,不能通过编译,这样就避免了类型安全问题与装箱拆箱的性能问题了。 ArrayList和List的区别: List不能被构造,而ArrayList可以被构造。
List list=new List(); //错误,不能被构造
ArrayList alist=new ArrayList(); //正确,可以被构造
List<string> lsstr=new List<int>(); //正确的写法
//注意:
List list=new ArrayList();//正确,将ArrayList转化为了List,此时使用的List的属性和方法。
ArrayList alist=new ArrayList();//正确,此时使用的是ArrayList的属性和方法。4.扩展: 装箱与拆箱:1.装箱:值类型转换为引用类型为装箱。比如:int A=3, object B=(object)A; 2.拆箱:引用类型转换为值类型为拆箱。比如:object A='3', int B=(int)A; 泛型:概念:泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。 泛型为.net框架引入了类型参数(type parameters)的概念。类型参数在设计类和方法时,不必确定一个或多个具体参数,其中的具体参数可延迟到客户代码中 声明和实现,比如MyList<T> ; 客户代码这样调用。MyList<int>,MyList<string>或者MyList<MyClass>。避免了运行时类型转换或装箱操作的代价和风险。此为整理后发布,原博客地址:http://www.cnblogs.com/a164266729/p/4561651.html
相关文章推荐
- C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组各各的区别
- c# 数组(Array),ArrayList ,List 的区别与联系
- C#中数组、ArrayList和List三者的区别
- 数组,ArrayList,List的区别
- c#中List、Dictionary、ArrayList、Hashtable和数组的区别是什么?
- C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组各各的区别
- [转]C#中数组,ArrayList与List对象的区别
- c#中数组,ArrayList和List的区别
- C#中数组、ArrayList和List三者的区别
- c#中List、Dictionary、ArrayList、Hashtable和数组的区别是什么?
- c#中List、Dictionary、ArrayList、Hashtable和数组的区别是什么?
- C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组各各的区别
- C#中数组,ArrayList与List对象的区别
- ArrayList 、List、数组的区别
- 数组、arraylist和list的区别和泛型的解释
- C#中数组,ArrayList与List对象的区别
- c#中List、Dictionary、ArrayList、Hashtable和数组的区别是什么?
- C# 数组,ArrayList与List对象的区别
- C#中数组,ArrayList与List对象的区别
- asp.net(C#.VB)数组、arraylist和list的区别