C#入门系列 -- 一维数组

举报
陈言必行 发表于 2022/03/05 14:59:12 2022/03/05
【摘要】 数组类型表示一组数据的集合,使用数组可以方便的定义一个名字(数组名)来表示大批量的数据(数组元素),同时数组支持通过循环结构实现批处理大量的数据。

一维数组定义

几个C#中与数组相关的重要定义:

  1. 元素:数组的独立数据项被称作元素。数组的所有元素必须是相同类型的,或继承自相同类型;

  2. 秩/维度:数组可以有任何为正数的维度数。数组的维度就是秩(rank);

  3. 维度长度:数组的每个维度都有一个长度,就是这个方向的位置个数,称为维度长度;

  4. 数组长度:数组中所有维度中元素的总和称为数组的长度。

数组类型表示一组数据的集合,使用数组可以方便的定义一个名字(数组名)来表示大批量的数据(数组元素),同时数组支持通过循环结构实现批处理大量的数据。

C#中,数组(Array)是一种包含若干变量的数据结构,这些变量都可以通过计算索引进行访问。

数组中包含的变量,又称数组的元素(Element)具有相同的类型,该类型称为数组的元素类型(Element Type)。

数组类型为引用类型,数组名为实际的数组引用留出空间。

定义格式如下:

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

或者分为两步:先定义,使用时初始化

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

其中,new运算符用来创建数组实例,在内存中为数组申请空间。

一维数组的定义说明:

  • 数组名必须符合C#中标识符的命名规则;
  • 一维数组是由元素类型、数组名和长度组成的构造类型。元素类型指示存放在数组中元素是什么类型,C#中数组元素的类型可以是值类型或引用类型;
  • 数组长度必须大于等于1,表示数组中元素的个数。数组在创建之前,数组长度必须已知,并且数组一旦被创建,其大小就固定了。C#不支持动态数组。
  • 数组的索引号从0开始,即如果维度长度为n,索引号范围就是0~n-1。

一维数组初始化

当数组被创建之后,每一个元素被自动初始化为元素类型的默认值。

对于预定义的类型,整型默认值为0,浮点型默认值为0.0,布尔型默认值为false,而引用类型的默认值为null。

C#支持对数组的显式初始化,即在创建数组时包括初始化。
列表来设置显式表达式。一般形式如下:

数组类型[] 数组名 = new 数组类型[数组长度]{与长度相等个数的元素列表};

比如:

int[] arr = new int[3]{1, 2, 3};

当初始化时,初值的个数一定要与数组大小相等,否则会出现编译错误。
比如:下面这样是不允许的

// 错误 ❎ 示例
int[] arr = new int[3]{1, 2};

若需要维度可选的则可以这样写:

数组类型[] 数组名 = new 数组类型[]{元素列表};

int[] arr = new int[]{1, 2, 3, 4};

一维数组使用

数组必须先定义后使用,且只能逐个引用数组元素的值,不能一次性引用整个数组。

数组元素引用是通过下标得到的,一般形式为:

数组名 [下标索引]

比如:

int[] arr = int[3]{1,2,3};
int a = arr[1]; // 索引是1取到的值是2

使用下标索引时需注意:

  • 数组元素的下标从0开始,与其内存形式对应。
  • 下标表达式可以为常量、常量表达式、变量及变量表达式,但必须为整数,并且不能是负数。
  • 元素的下标值不能超过数组的长度,否则会导致数组下标越界的错误。
  • 数组不允许以整体形式进行算术运算等,但是C#支持数组的整体赋值。

一维数组遍历

数组遍历:指将数组中挨个访问元素所有元素。

for循环

最简单最常用的for循环实现

int[] arr = new int[] { 1, 2, 3, 4, 5 };

for (int i = 0; i < arr.Length; i++)
{
    Console.WriteLine(arr[i]);
}

foreach

foreach语句用于枚举一个集合的元素。

foreach语句的语法

foreach(数据类型 变量 in 数组名)
{
  语句
}
  • foreach实现:
int[] arr = new int[] { 1, 2, 3, 4, 5 }; 

foreach (var item in arr)
{
    Console.WriteLine(item);
}

foreach使用注意事项:

  1. foreach中数据类型和变量组成一个临时迭代变量声明。foreach语句使用迭代变量来连续表示数组中的每一个元素;
  2. 对临时迭代变量的声明,其数据类型可以显式地声明为数组中元素的类型,也可以使用var关键字来隐式提供它的类型,然后由编译器根据数组的类型推断临时迭代变量的类型;
  3. 迭代变量是只读的,不能被修改。对于值类型的数组不能改变数组的数据;对于引用类型的数组不能改变实际数据的引用,但是实际数据有可能通过迭代变量被修改;
  4. 使用foreach遍历数组时,不需要设置循环条件,数组遍历更简单快捷,也更安全,尤其对于多维矩形数组的遍历,只需一个foreach语句即可实现。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。