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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章