一維數組
數組用來將相同數據類型存儲在存儲單元裏組成的構造類型,數組的每個成員稱爲一個數組元素。
一、一維數組的初始化
- 動態初始化
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}}如下圖所示
三、二維數組的元素訪問
- 數組名[第一維下標,第二維下標]
- 謹防數組越界
四、數組的長度
- 總⻓度(⼆維數組的元素個數):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);
}