首页 / 软件开发 / C# / 认识C#数组,了解数组类型、学习定义及初始化
认识C#数组,了解数组类型、学习定义及初始化2011-07-14 博客园 叶子文文以下是我在给学生讲解数组时采用的ppt的大纲内容(粗体),由于本人知识上的欠缺,可能在很多知识点上把握不准,所以我会把我要给 学生讲解的语句(不加粗)同时写出,希望有路过我这份教案的人给予指点,如何能够给可能只有c语言基础知识的学生讲解清楚,同时让他们 理解其实际项目中的用法。一:我们来认识数组,了解数组类型、学习定义及初始化数组是同一数据类型的一组值首先我 们将介绍几个概念有助于你们理解数组。数组是一种具有相同类型和名称的变量的集合,如一组整数、一组字符等。组成数组的这些变量被称 为数组的元素,元素的个数也称为数组的长度、数组的容量,容量一旦创建了,便固定了,此数组的元素个数也就不能增加或减少了。每个数组元素都有一个编号,这个编号叫做下标,这个下标也称为索引,一个有n个元素的数组,其索引是从0~n-1为止。索引以及容量这些数 组对象的特性,在数组对象创建的时候便固定了,当利用索引操作时,不可以超出定义的容量,以免发生数组索引超出界限的错误。在 c语言中,数组也会存在索引越界的情况,但是在编译时一般不会体现出来,可能会顺利的通过,但是却为你的程序带来了隐患,如果用户操作 不当,超出容量了,程序就会出现错误。VS就解决了这个问题,在编译时发现越界就会报错,将危险停留在编程阶段,减少了程序的不稳定性 。同学们现在是不是有点疑惑,为什么要用数组来存放数据呢?我定义多个变量来存放数据不行吗?用数组有什么好处呢?让 我们用数组的下个特性来解释吧!数组属于引用类型,存储在托管堆内存中 ,指针在线程堆栈中。引用类型的数值,会把在托管 堆中分配一块专门的位置存放数据,然后在线程堆栈中存放着指向数据存储的内存地址,因为数组是引用类型,这样它增加、修改数组中的元 素都会按照索引将元素排列在一起,就像班级中学生的学号一样,你按照学号(索引)就可以对学生的如成绩、信息进行操作,你只需定义一 个数组变量,记住它的名字就可以方便进行各种你想达到的效果。不会像简单数值类型那样,你得记住班级每个学生的名字才能进行工作,修 改或删除信息都不方便,而且他们的存放位置也不一定连续,这势必会降低程序的效率,所以你可以利用数组,组织所要管理的数据,例如, 记录按日、按月……消费的流水账,记录员工的工作效率等。接下来,我们看一下数组的定义及初识化。一维数 组的定义及初识化:type[] arrayname={value1,value2,……,valueN}; //定义了数据类型同时赋值。type[] arrayname=new type[N]{v1,v2,……,vN}; //使用new关键字定义同时赋值。此处的N可以省略,因为定义类型后已经赋了N个初 值。在这里第一次出现了new这个关键字,它是c#中很常用的,也是你们现在比较难理解的概念,你们现在只需要知道new的过程实际上 就是给数组在托管堆 中分配了一块位置,用来存放数据就可以了,以后我们在学习到类时会专门讲解。 接下来要看到的这种定义是我要强调 的。数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行。也就是说,你可以像下面的例子一样,先定义 ,但这是要写上N,告诉编译器定义了N个元素。type[] arrayname=new type[N]; //先定义N个元素这种定义 后.net会先为数组中的每个元素根据类型赋予同一个默认值。如int型,便给每个元素赋值为0;string类型为“”。当你想对那个 元素进行操作时,就按照索引给它赋值。如:arrayname[0]=value1; arrayname[N-1]=valueN;type[] arrayname; //这种方法是将第二种定义方法拆分成两步arrayname=new type[N]{v1,v2,……,vN}; //此处的N也是可以 省略的,道理相同。