再学大话设计模式--附录(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangyunzhao007/article/details/82953097

一,集合

数组:

         首先介绍一下数组,优点是数组在内存中连续存储,因此可以快速而容易的从头到尾遍历元素,可以快速的修改远元素,但是有缺点,就是创建数组时必须指定数组变量的大小,还有在两个数组之间添加元素也比较困难(假设将下标为2的数组前插入一个元素,就需要将下标为2和比2大的元素都要向后移动一位,可以联系链表,那个是插入简单,修改麻烦)。

集合:

        为了让存入的元素个数不是确定的,是可以自增长的,,方便不确定元素个数的情况下存值,出现了集合,.NET Framework提供了数据存储和检索的专用类,这些类统称集合,这些类提供对堆栈,队列,列表和哈希表的支持。大多数的集合类实现相同的接口。

ArrayList是命名空间System.Collections下的一部分,它是使用大小可按需动态增加的数组实现IList接口

ArraryList的容量是ArrayList可以保存的元素数。ArrayList的默认初始容量是0。随着元素添加到ArrayList中,容量会根据需要通过重新分配自动增加。使用整数索引可以访问此集合中的元素。此集合的索引从零开始。

ArraryList不是类型安全的,存入集合中是装箱过程,所谓装箱就是把值类型打包到Object引用类型的一个实例中,类型也会隐式转换成Object。

必须有强制转换才能接收值。

将值从集合中拿出来就是拆箱过程,所谓拆箱,就是指从对象中提取值类型,在集合中是Object类型,赋值需要强制转换,赋值给什么类型的值,就要强制转换成什么类型的。

            int i = 1;
            string j = "ttt";
            ArrayList list = new ArrayList();
            list.Add(i);
            list.Add(j);
            i =Convert.ToInt32( list[0]);
            j = Convert.ToString(list[1]);
            for (int n = 0; n < list.Count; n++)
            { Console.Write(list[n]); }
            Console.Read();

二,泛型

泛型是具有占位符(参数类型)的类,结构,接口,和方法,这些占位符是类,结构,接口和方法所存储使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型和其方法的参数类型出现。

通常情况下,都建议使用泛型集合,因为这样可以获得类型安全的直接优点而不需要从基数集合类型派生类并实现类型特定的成员。此外,如果集合元素为值类型,泛型集合类型的性能通常优于对应的非泛型集合类型(并优于非泛型基集合类型派生的类型),因为使用泛型就不必对元素进行装箱。泛型命名控件是System.Collections.Generic。

            //实例化List对象,对象只能接收int类型,或者子类型
            List<int> Num = new List<int>();

            //实例化List对象,对象只能接收string类型,或者子类型
            List<String> Str = new List<String>();

            Num.Add(123);
            Num.Add(456);

            Str.Add("gg");
            Str.Add("hh");

猜你喜欢

转载自blog.csdn.net/wangyunzhao007/article/details/82953097
今日推荐