c#语言中数组的下标是从( )开始.,从C#开始的编程入门——数组

对不起,符合主题的图越来越难找了

想象一下,如果你要记录100个学生的语文成绩。

2091542

一两个学生很好说。

那么十个学生我们需要10个变量,100个学生需要100个变量,而一般学校有上万学生很正常。

这太有问题了。

我们需要一种类型,让它可以保存多个数据,而不是用多个变量来保存一组相同类型的数据。

这种类型就叫数组(array)。数组这个中文名称很容易误导人,它并不是只能保存一组数,它可以是各种类型数据的序列。

我们像这样声明一个int类型的数组。以数组所保存的数据类型开始,然后紧接着一对方括号,然后是名称。它可以保存多个int类型的数据,注意只能保存int类型的数据,数组所有的元素必须是相同类型。

2091542

我们在这里使用大括号立即给数组填充数据。这种方法和C++的列表初始化有那么一点像。使用这种写法创建的数组无需(也不允许)提供元素个数。

cs中的数组实际上是一个类,我们也可以使用new运算符创建一个数组,使用这种方式创建的数组必须指明元素个数,但是可以稍后再填充数据。

2091542

访问数组元素

我们现在有了一个数组,填充了一些数据,那么我们要怎样拿到保存在里面的数据呢?

[](方括号)也是一个运算符,在C#的范围内,她叫做索引运算符(Indexer Operator),某些语言也称作下标运算符。在数组变量后面使用这个运算符,在其中填入代表元素位置的索引,我们就可以拿到我们保存在数组中的数据了。

2091542

你可能会问,这里为什么取1拿到的是2?值得注意的是,C#的数组索引是从0开始的。不仅仅是C#,其实很多编程语言的索引都是从0开始的(虽然也存在从1开始的语言)。

同样,我们可以给指定位置的元素赋值。

2091542

范围操作

从C#8.0开始,C#中增加了范围运算符(Range operator)。就是这两个点..

2091542

nums的类型仍然是int[]。[1..4]代表从数组a的第二个元素(索引为1)开始取,取到第三个元素(也就是说这表示的是一个左闭又开的区间,包含左边的索引,但不包含右边的)。

而[1..^0]代表从第二个元素一直取到最后一个元素。^0代表“从后往前数第0号元素”,^代表从后往前。而如果只需要指定一头的索引那么可以直接省略。[1..]等价于[1..^0]。反过来也是一样,[..^1]等价于[0..^1]。更详细的可以参考上面的链接。

谨防越界

从编程语言中的数组诞生之初它就面临一个问题:索引越界。

一个只有五个元素的数组,那么你尝试用6去索引一个元素,必然会报错。

2091542

这样的问题在编译时是无法被编译器检查出来的。你只能尽量避免这种情况发生。首先应当时刻铭记索引是从0开始的。然后在连续访问数组的一段位置时应当注意检查。

获取数组长度

数组的Length属性会返回数组的长度。这里的属性我们姑且理解为数组中保存的一个变量,它代表了数组的长度。

2091542

如果我们想把一个数组里面的元素全盘输出,我们就可以像这样。并且使用Length来防止越界。

2091542

另一种for循环——foreach

foreach是for循环的另一种形式,我们不再需要一个控制变量来保存索引。

2091542

有了foreach,我们就可以把上一节中的循环改写成这样。通常习惯用var来声明这样一个保存元素的变量,当然你也可以显示声明。n的值在每一次循环中都会拿到数组a中的一个元素,而不需要索引。实际上foreach不止可以用在数组上,只要满足一定条件的类型都可以用,我们在后续的章节中介绍。

其实数组还有很多有用的操作,但是这里我只讲这么多。因为这对于之后一两篇的内容来说已经足够了。更多的东西我放到后面准备工作做充足之后再展开,我想尽量避免(虽然有些还是难以避免)“现在你暂时只需要知道/记住/认为。。。”这样的解释。

下一篇里我们开始介绍函数,让我们的代码可以重复使用,让程序真正的像一个程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值