首页 »DotNet » c#数组的属性、foreach遍历、交错数组和矩形数组的区别 »正文
c#数组的属性、foreach遍历、交错数组和矩形数组的区别
来源: 发布时间:星期五, 2009年1月9日 浏览:4次 评论:0
本次课我们要学习 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 属性、foreach ![](/icons/32101de.gif) 使用方法、我上节课提到 ![](/icons/32101de.gif) 交错 ![](/icons/32101shuzu.gif) ![](/icons/32101dou.gif) 我会通过多个例子 ![](/icons/32101de.gif) 演示讲解让你们理解交错 ![](/icons/32101shuzu.gif) 定义已经和规则 ![](/icons/32101de.gif) 2维 ![](/icons/32101shuzu.gif) (矩形 ![](/icons/32101shuzu.gif) ) ![](/icons/32101de.gif) 区别加深理解 ![](/icons/32101dou.gif) 下 ![](/icons/32101yi.gif) 节我们还将学习 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 常用思路方法 ![](/icons/32101dou2.gif) 下面我们来学习 ![](/icons/32101yi.gif) 下 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 属性,什么是属性呢?在以后学习类 ![](/icons/32101de.gif) 时候我会给大家详细 ![](/icons/32101de.gif) 讲解 ![](/icons/32101dou.gif) 现在我给你们举个现实生活 ![](/icons/32101de.gif) 例子 ![](/icons/32101dou.gif) 帮助你们理解什么叫属性 ![](/icons/32101dou.gif) 属性 ![](/icons/32101yi.gif) 般都是名词 ![](/icons/32101dou.gif) 表示它 ![](/icons/32101de.gif) 所有者(即对象)拥有 ![](/icons/32101de.gif) 特性 ![](/icons/32101dou.gif) 如抹布(对象) ![](/icons/32101de.gif) 颜色、大小(属性) ![](/icons/32101dou.gif) 而下 ![](/icons/32101yi.gif) 节将学习 ![](/icons/32101de.gif) ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 思路方法 ![](/icons/32101yi.gif) 般是动词 ![](/icons/32101dou.gif) 如抹布 ![](/icons/32101de.gif) 功能 ![](/icons/32101dou.gif) 抹布(对象)清除(思路方法)桌面、车辆、地面(这些动作 ![](/icons/32101de.gif) 宾语也可以比喻成以后要学习 ![](/icons/32101de.gif) 参数) ![](/icons/32101dou.gif) 现在你们就记住属性是描述对象 ![](/icons/32101de.gif) 特性 ![](/icons/32101de.gif) ![](/icons/32101dou.gif) ![](/icons/32101yi.gif) 般是名词 ![](/icons/32101dou.gif) 思路方法是描述对象功能 ![](/icons/32101de.gif) ![](/icons/32101dou.gif) ![](/icons/32101yi.gif) 般是动词 ![](/icons/32101dou2.gif) 那 ![](/icons/32101shuzu.gif) 有哪些属性呢? ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 属性:Array.Length ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 容量 利用这个属性 ![](/icons/32101dou.gif) 我们可以取得 ![](/icons/32101shuzu.gif) 对象允许存储 ![](/icons/32101de.gif) 容量值 ![](/icons/32101dou.gif) 也就是 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 长度、元素个数,这个比较好理解 ![](/icons/32101dou.gif) ![](/icons/32101shuzu.gif) 还有其他 ![](/icons/32101de.gif) 属性 ![](/icons/32101dou.gif) 比如 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 维数等 ![](/icons/32101dou.gif) 属性 ![](/icons/32101de.gif) 使用方法比较简单 ![](/icons/32101dou.gif) 学会 ![](/icons/32101yi.gif) 种 ![](/icons/32101dou.gif) 其他 ![](/icons/32101de.gif) 格式基本 ![](/icons/32101yi.gif) 致 ![](/icons/32101dou.gif) 这里我们就不举例了 ![](/icons/32101dou2.gif) 在上 ![](/icons/32101yi.gif) 节最后 ![](/icons/32101yi.gif) 个例子时我们用到了通过索引(index)得到 ![](/icons/32101shuzu.gif) 元素 ![](/icons/32101de.gif) 值Array[index] ![](/icons/32101dou.gif) 但是当 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 维数、容量较多时 ![](/icons/32101dou.gif) 采用索引这种思路方法就会繁杂 ![](/icons/32101dou.gif) 不仅代码量大也会降低编程效率 ![](/icons/32101dou.gif) 针对这个问题C#提供了foreach语句 ![](/icons/32101dou.gif) 专门用来读取集合/ ![](/icons/32101shuzu.gif) 中 ![](/icons/32101de.gif) 所有元素 ![](/icons/32101dou.gif) 我们把这种功能叫做遍历 ![](/icons/32101dou2.gif) 语法书写如下: 遍历 ![](/icons/32101shuzu.gif) :foreach(type objName in collection/Array) 这段语句会逐 ![](/icons/32101yi.gif) 检查 ![](/icons/32101shuzu.gif) 中 ![](/icons/32101de.gif) 所存储 ![](/icons/32101de.gif) 变量值 ![](/icons/32101dou.gif) 并且 ![](/icons/32101yi.gif) ![](/icons/32101yi.gif) 将其取出 ![](/icons/32101dou.gif) 其中 ![](/icons/32101de.gif) type是你所要读取 ![](/icons/32101de.gif) ![](/icons/32101shuzu.gif) 对象将要存储在objName变量 ![](/icons/32101de.gif) 数据类型 ![](/icons/32101dou.gif) 而objName是定义了 ![](/icons/32101yi.gif) 个type类型 ![](/icons/32101de.gif) 变量名 ![](/icons/32101dou.gif) 代表每 ![](/icons/32101yi.gif) 次从集合和 ![](/icons/32101shuzu.gif) (collection/Array)中取得 ![](/icons/32101de.gif) 元素 ![](/icons/32101dou.gif) collection/Array则是所要存取 ![](/icons/32101de.gif) ![](/icons/32101shuzu.gif) 对象 ![](/icons/32101dou2.gif) 用这种思路方法只需写 ![](/icons/32101yi.gif) 个foreach就可以遍历出除交错 ![](/icons/32101shuzu.gif) 以外 ![](/icons/32101de.gif) 所有维数 ![](/icons/32101de.gif) ![](/icons/32101shuzu.gif) ![](/icons/32101dou2.gif)
注:objName ![](/icons/32101de.gif) 数据类型type必须和collection/Array对象 ![](/icons/32101de.gif) 类型相同或比它大 ![](/icons/32101dou2.gif) 下面我们举 ![](/icons/32101yi.gif) 个用foreach和for遍历规则 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 例子 ![](/icons/32101dou.gif) 其中涉及到了 ![](/icons/32101yi.gif) 个 ![](/icons/32101shuzu.gif) 得到维数 ![](/icons/32101de.gif) 思路方法 ![](/icons/32101dou.gif) 比较foreach在 ![](/icons/32101yi.gif) 次性遍历规则 ![](/icons/32101shuzu.gif) 上 ![](/icons/32101de.gif) 优势 ![](/icons/32101dou2.gif) [,,] a = [2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };//定义 个2行2列2纵深 3维 a for ( i = 0; i < a.GetLength (0) ;i ) //用Array.GetLength(n)得到 [0,1,,,n]上 维数 元素数 0代表行 1列 n代表此 是n+1维 { for ( j = 0; j < a.GetLength(1); j ) { for ( z = 0; z< a.GetLength(2);z )//2代表得到纵深上 元素数 如果 有n维就得写n个for循环 { Console.WriteLine(a[i,j,z]); } } } 用foreach循环 ![](/icons/32101yi.gif) 次性遍历a ![](/icons/32101shuzu.gif) [,,] a = [2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };//定义 个2行2列2纵深 3维 a foreach( i in a) { Console .WriteLine (i); } 这两种代码执行 ![](/icons/32101de.gif) 结果是 ![](/icons/32101yi.gif) 样 ![](/icons/32101de.gif) 都是 每行 ![](/icons/32101yi.gif) 个元素 ![](/icons/32101dou.gif) 共8行 ![](/icons/32101dou.gif) 元素分别是1 2 3 4 5 6 7 8 下面我们再做个例子 ![](/icons/32101dou.gif) 是 ![](/icons/32101yi.gif) 个利用for和foreach循环做 ![](/icons/32101de.gif) 存取 ![](/icons/32101shuzu.gif) 元素 ![](/icons/32101de.gif) 例子 ![](/icons/32101dou.gif) 首先提示用户输入学生 ![](/icons/32101de.gif) 个数 ![](/icons/32101dou.gif) 然后把学生个数作为存储学生姓名 ![](/icons/32101de.gif) ![](/icons/32101shuzu.gif) names ![](/icons/32101de.gif) 元素个数 ![](/icons/32101dou.gif) 采用for循环按照 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 索引i从0位开始循环输出“输入学生姓名” ![](/icons/32101de.gif) 提示 ![](/icons/32101dou.gif) 并把用户输入 ![](/icons/32101de.gif) 学生姓名按照其在 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 索引方式names[i]存储在names ![](/icons/32101shuzu.gif) 中 ![](/icons/32101dou.gif) for循环次数 ![](/icons/32101de.gif) 最大值(即索引 ![](/icons/32101de.gif) 最大值)通过 ![](/icons/32101shuzu.gif) 属性.Length得到 ![](/icons/32101dou.gif) 上节课我们说过容量和索引的间 ![](/icons/32101de.gif) 关系是index=Array.Length-1,本题即i ![](/icons/32101de.gif) 最大值<names.Length,存储后 ![](/icons/32101dou.gif) 提示“输出学生姓名” ![](/icons/32101dou.gif) 再用foreach循环 ![](/icons/32101yi.gif) 次性遍历names ![](/icons/32101shuzu.gif) 中存储 ![](/icons/32101de.gif) 每个元素(学生 ![](/icons/32101de.gif) 姓名) ![](/icons/32101dou.gif) ![](/icons/32101yi.gif) 个 ![](/icons/32101yi.gif) 个 ![](/icons/32101de.gif) 把它赋值给name元素 ![](/icons/32101dou.gif) 然后输出到控制台上
![](http://www.crazycoder.cn/WebFiles/20091/2f15e623-5abf-4dd9-b254-7af806818632.jpg) 提问:区别下两张图片发现了什么? 2维 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 第3行第3列我们没有赋值 ![](/icons/32101dou.gif) 但是会出现———— ![](/icons/32101dou.gif) 介绍说明它在创建 ![](/icons/32101de.gif) 时候给这个位置 ![](/icons/32101de.gif) 元素占位了 ![](/icons/32101dou.gif) 只是根据上节课说 ![](/icons/32101de.gif) 原则按照数据类型给了 ![](/icons/32101yi.gif) 个默认 ![](/icons/32101de.gif) null值 ![](/icons/32101dou.gif) 当我们用“------”取代时 ![](/icons/32101dou.gif) 能够显示出来 ![](/icons/32101dou.gif) 而交错 ![](/icons/32101shuzu.gif) ![](/icons/32101dou.gif) 没有创建元素 ![](/icons/32101de.gif) 位置时 ![](/icons/32101dou.gif) 它是不存在 ![](/icons/32101de.gif) ![](/icons/32101dou2.gif) 本节我们主要是学习foreach在两种 ![](/icons/32101shuzu.gif) 中 ![](/icons/32101de.gif) 遍历 ![](/icons/32101dou.gif) 下 ![](/icons/32101yi.gif) 节我们来学习 ![](/icons/32101shuzu.gif) ![](/icons/32101de.gif) 常用思路方法
相关文章
读者评论
发表评论
|
|