上午看到原道楠的帖子,感概颇深。作为论坛中的一员,我认为自己应该做的就是能够写出更多,更好的帖子,将论坛活跃起来,使更多的人都能参与进来。这是对其最大的理解和支持。再一次感谢原道楠!
关于数组的理解,虽然是大家在学习的时候最先接触的,但是应该是平时用到的比较少的(相对于List等而言)。为什么会是这样呢?可能最主要的原因就是数组在初始化的过程中必须要声明大小,在这一点上限制的比较死。
一. 数组的声明和初始化
数组的声明很简单,比如我们想要声明一个整型数组,可以直接这样写 int[] myArray.
初始化就需要用到new,而且必须同时给出数组的大小 myAyyay = new int[5];这时候内存就开辟了一段空间,来存储5个整型值。默认值为0.
声明和初始化可以写在一起。上面的例子就可以写成 int[] myArray = new int[5];同样存储的是5个0.在初始化的时候也可以给定其他的值, 比如 int[] myArray = new int[5]{1, 2, 3, 4, 5};注意: 后面的个数一定要和给定的大小是一样的,否则就会报错。如果没有给定数组的大小,编译器可以根据后面初始化的值得个数自己推断,这样也是可以的。所以上面的也可以写成
int[] myArray = new int[] {1, 2, 3, 4, 5}; 或是更简单的 int[] myArray = {1, 2, 3, 4, 5};但是使用{....}的这种形式只能在初始化的时候使用,当给数组进行初始化之后就不能使用了。比如 int[] myArray = new int[5]; myArray = {1, 2, 3, 4, 5};这样就会报错。如果希望在初始化之后赋值,只能用for语句了。
二. 获取数组的值及给数组赋值
数组已经进行了int类型的索引,所以可以通过[index]来获取值。注意: index是从0开始的。如果index超过了数组的长度,就会在运行时报IndexOutOfRangeException的错误。给数组的某项赋值,也可以通过索引来进行赋值。如果需要给整个数组赋值,就需要用到for循环了 for(int i = 0; i < myArray.Length; i++){ ... }。
三. 一个容易答错的问题 : 数组是引用类型。及时声明的是int[],也是引用类型。
四. Array类型
当我们声明一个数组的时候,已经隐式继承自 Array。所以我们需要对这个类进行一些介绍
public abstract class Array : ICloneable, IList, ICollection, IEnumerable{ ... }(引自 MSDN)。
我们创建的数组都继承自 Array。所以可以直接用到Array的一些属性和方法。比如常用的Length,索引。还有通过Array所实现的接口,我们可以对创建的数组进行迭代,复制以及一些其他的方法
关于数组的介绍大概就这些,一些比较偏僻的知识就不过多的介绍了。上面说了数组的硬伤是初始化的时候就需要固定大小,从而造成我们在使用过程中的不便。但是数组却有List的对象没有的优势:速度。所以在能够使用数组的情况下,还是可以使用数组的。
|