C#入门之数组

一. C#的声明数组和赋值

1. 数组的声明和初始化语法如下:

数据类型[ ] 数组名 = new 数据类型[长度] ; 

注意:数组名像变量名一样要遵循标识符的命名规则;长度必须是整数

下面我们来比较变量和数组的声明与初始化,右边是在内存中为变量和数组分配空间的示意:


对比变量 x 和数组 y 就会发现,数组 y 中其实包含了 3 个 double 类型的变量,为什么是 3 个?因为初始化数组时在 [ ] 中声明的长度为 3 。

既然都在数组 y 中,所以 3 个变量(应该叫数组元素)的名字都叫 y ,为了区分它们,按照顺序给它们加上索引 [0]、[1]、[2] 。

请注意:数组元素的索引从 0 开始递增。那么,数组 y 中 3 个元素的名字就变成了 y[0]、y[1]、y[2] 。


小贴士:数组经过初始化以后,数组元素有默认的初始值,

 double 类型为 0.0 , int 类型为 0 , char 类型为 'a' , bool 类型为 false , string 类型为 null 。


2. 数组元素的赋值与普通变量相同。

例如,声明了一个长度为 3 的 string 类型数组,逐个赋值,然后输出:



3. 如何知道一个数组的长度呢? 

数组.Length 属性会返回数组的长度(即数组元素的个数)。

例如


代码中的 friends.Length 会返回 friends 数组的长度,请看运行结果:



二. C#访问数组元素

1. 数组元素的多种初始化方式


数组 b、c、d 是在初始化时为数组元素指定初始值。

数组 d 用 [3] 声明了数组长度,后面 { } 中的初始值个数要与 [ ] 中声明的长度相同。

数组 b、c 初始化没有声明长度,长度由 { } 中的初始值个数确定。


2. 上一节输出同学名字的例子可以改为



三. 算法——查找(一)

循环访问一组数据,从中找出符合条件的数据,这样的算法叫做查找

写查找的算法,需要做 2 件事,一是写循环访问每一个数据,二是对每一个数据进行验证

这样,就需要写 2 个“条件”:循环条件和筛选条件

例如


循环条件是x<=10,筛选条件是x%2==0

初学者常见的错误是把 2 个条件都写在循环条件里,比如把循环条件写成 x<=10 && x%2== 0 

请注意甄别:循环条件必须能够遍历每一个数据

如果你写的循环条件会漏掉某些数据,或者循环没有能够正常运行,请检查是不是把筛选条件也写在循环条件里了。


运行结果是



四. 算法——查找(二)

上一节是把符合条件的数据输出出来,但有时只想知道有没有符合条件的数据,不用输出。

例如

查找一组人名,如果人名中包含“诺贝尔”,就打印“有诺贝尔”,如果没有,就打印“木有木有”


运行结果


但是这段代码有个逻辑错误,正确的逻辑应该是:一组数据中只要有一个符合条件,就可以认为“有符合条件的数据”;

但只有一组数据中每一个都不符合条件,才能认为“没有符合条件的数据”——有一个相等即为"有",全都不等才是"无"

代码修改为


变量 hasNbr 起到了关键作用:记录筛选结果。

它的初始值为 false ,表示没有,如果循环中找到了相等的数据,再修改 hasNbr 的值为 true ,表示有。

循环结束后,只要看看变量 hasNbr 是 true 还是 false ,就知道循环中是否修改过。

其中,break 其实不是必须的,但是一旦确认有诺贝尔,那么继续筛选下去就没有意义,用 break 跳出循环可以节省时间。

运行结果为



五. C#的foreach关键字

for 循环使我们可以通过索引访问数组元素;而 foreach 循环则可以不依赖索引而读取每一个数组元素

下面的示例代码声明了一个整型数组,然后通过两种方法输出数组元素:


运行结果是



使用foreach 的语法


第4点,如上面的代码,迭代变量 x 只能用于读取数组 num 中的值,但是不能给数组元素赋值

如果尝试给 x 赋值,则会有下面的错误提示:


foreach 主要用于,C#中有一些类似于数组的数据组织方式,它们中有一些是没有元素索引的,对于这些元素,只能通过 foreach 遍历。


六. C#的二维数组的声明和访问

二维数组,就是以数组作为元素的数组。

来看看二维数组和一维数组的对比


二维数组中有2 个一维数组分别为 b[0]、b[1]。

每一个一维数组中的元素索引分别为 0、1、2,

即每一个一维数组又包含3个int型变量:b[0,0]、b[0,1]、b[0,2]、b[1,0]、b[1,1]、b[1,2]


二维数组的声明

int[,] arr = new int[2,3]; //包含2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素

二维数组的赋值的输出

arr[1,0] = 28; //二维数组元素有2个索引,都是从0开始,以arr数组为例,元素索引从[0,0]到[1,2]
Console.Write( arr[1,0] );

例如

有 4 名同学参加语文和数学两门考试,我们用二维数组存储他们的成绩,每位同学的 2 门课分数,存储在一个一维数组中:


运行结果






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值