C#数组及foreach遍历

一维数组

数组用来将相同数据类型存储在存储单元里组成的构造类型,数组的每个成员称为一个数组元素。

一、一维数组的初始化

  • 动态初始化
    1.数据类型[] 数组名 = new 数据类型[数组长度];此时数组中每一个元素都是默认值,int默认值为0,float默认值为0,bool的默认值为false,char的默认值为’\0’,表示空字符,string的默认值为""
    2.数据类型[] 数组名 = new 数据类型[数组长度]{元素1,元素2,…};
    3.数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
  • 静态初始化
    数据类型[] 数组名 = {元素1,元素2,…};

二、数组的访问

  • 从0开始计数,数组中第一个元素的下标为0
  • array.Length是数组的长度,只读
  • 访问数组时,如果下标所对应的数组元素不存在就会引发数组越界异常

三、引用类型

  • 值类型(存储在栈内存):存的是具体的值,int、float、bool、char都是值类型
  • 引用类型(存储在堆内存):栈内存里存的是堆内存的地址,数组是引用类型,string是特殊的引用类型。数组属于一种引用类型,因此如果将数组名b赋给数组a,那么数组b在操作数组元素时,实质上操作的还是数组a,如图所示
    在这里插入图片描述

二维数组

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。

一、二维数组的定义

  • 数据类型 [,] 数组名;

二、二维数组的初始化

  • 动态初始化
    1.数据类型 [,] 数组名 = new 数据类型[第一维长度(常量表达式),第二维长度(常量表达式)];
    2.数据类型 [,] 数组名 = new 数据类型[,]{数组值};
  • 静态初始化
    数据类型 [,] 数组名 = {数组值};
    int[,] array = {{7,6,3},{2,8,5}}如下图所示int[,] array = {{7,6,3},{2,8,5}};

三、二维数组的元素访问

  • 数组名[第一维下标,第二维下标]
  • 谨防数组越界

在这里插入图片描述
四、数组的长度

  • 总⻓度(⼆维数组的元素个数):array.Length
  • 第⼀维的⻓度:array.GetLength(0)
  • 第n维的⻓度:array.GetLength(n-1)

五、二维数组的遍历

for (int i = 0; i < heroData.GetLength(0); i++) 
{
	for (int j = 0; j < heroData.GetLength(1); j++)
	{
		Console.Write(heroData[i,j] + "\t");
	}
	Console.WriteLine();
}

六、foreach迭代遍历

  • foreach语法
//迭代类型必须和后面的迭代集合匹配,也可以使用模糊数据类型var
//迭代集合可以是数组、字符串、集合等
//foreach性能消耗要⼤⼀点,所以能⽤for的尽量⽤for
foreach (迭代类型 迭代变量名 in 迭代集合) 
{
	//循环体
}
  • 迭代遍历是只读的,不能修改
int[] a = { 1, 2, 3, 4, 5, 6, 7 };
foreach (int x in a)
{
	////可以快速遍历一维数组
	Console.WriteLine(x);
}
int[,] map = { { 1, 2, 3 }, { 4, 5, 6 } };
foreach (int x in map)
{
	//快速遍历二维数组
	//注意:迭代变量x是只读的,不允许修改,如x++会出现错误
	Console.WriteLine(x);
}
发布了11 篇原创文章 · 获赞 1 · 访问量 446

猜你喜欢

转载自blog.csdn.net/weixin_43914767/article/details/104362307