java課程建設(shè)網(wǎng)站怎么做好網(wǎng)絡(luò)營銷推廣
文章目錄
- 前言
- 數(shù)組的概念
- 1,一維數(shù)組:
- 2,多維數(shù)組:
- 3,交錯數(shù)組:
- 區(qū)別總結(jié)
- 結(jié)語
前言
😄大家好,我是writer桑, 這是自己整理的 C# 數(shù)組筆記,方便自己學(xué)習(xí)的同時分享出來,感謝支持。
數(shù)組的概念
數(shù)組表示可以將同一類型的多個變量存儲在一個數(shù)組的數(shù)據(jù)結(jié)構(gòu)中,同時分配指定的數(shù)組元素類型來聲明數(shù)據(jù)元素的類型。
示例如下:
// 聲明一個5個整數(shù)的一維數(shù)組。
int[] array1 = new int[5];// 聲明和設(shè)置數(shù)組元素值。
int[] array2 = new int[] { 1, 3, 5, 7, 9 };// 替代語法
int[] array3 = { 1, 2, 3, 4, 5, 6 };//聲明一個二維數(shù)組。
int[,] multiDimensionalArray1 = new int[2, 3];// 聲明和設(shè)置數(shù)組元素值。
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };// 聲明一個交錯數(shù)組。
int[][] jaggedArray = new int[6][];// 聲明交錯數(shù)組結(jié)構(gòu)中第一個數(shù)組的值。
jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
- 數(shù)組可以是一維、多維或者交錯的,三者的區(qū)別在于聲明數(shù)組的維度上
- 數(shù)組元素的默認(rèn)值設(shè)置為零,而引用元素設(shè)置為 null,聲明后的數(shù)組在生存期內(nèi)無法被更改
- 數(shù)組元素可以通過索引進(jìn)行訪問,包含 n 個元素的數(shù)組的索引為 0 到 n-1
- 數(shù)組類型是從抽象的基類型 Array 派生的引用類型,數(shù)組元素可以是任何類型,其中包括本身的數(shù)組類型
- 所有數(shù)組都實現(xiàn)了 IList 和 IEnumerable,可以使用 foreach 語句循環(huán)訪問數(shù)組和 Length 屬性輸出數(shù)組的長度。 單維數(shù)組還實現(xiàn)了 IList<T> 和 IEnumerable<T>
1,一維數(shù)組:
一維數(shù)組也是最簡單、最常用的數(shù)組。在 C# 程序中使用 new 運(yùn)算符實現(xiàn)一維數(shù)組,同時指定數(shù)組元素類型和元素數(shù)量。
示例如下:
// 聲明一個元素數(shù)量為5的整數(shù)數(shù)組
int[] array1 = new int[] { 1, 3, 5, 7, 9 };// 聲明字符串?dāng)?shù)組
string[] weekDays = new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };// 可以省略 new 表達(dá)式和數(shù)組類型, 稱為隱式類型化數(shù)組
int[] array2 = { 1, 3, 5, 7, 9 };
string[] weekDays2 = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };// 如果聲明數(shù)組但未創(chuàng)建數(shù)組變量,則必須在引用該數(shù)組之前使用 new 運(yùn)算符分配新數(shù)組
int[] array3;
array3 = new int[] { 1, 3, 5, 7, 9 };
2,多維數(shù)組:
多維數(shù)組表示在一維數(shù)組的基礎(chǔ)上增加了維度,多維數(shù)組在聲明和訪問元素的方式和一維數(shù)組不同,但在實現(xiàn)和屬性上跟一維數(shù)組沒有本質(zhì)的區(qū)別, 一維數(shù)組支持的操作多維數(shù)組也都支持。
示例如下:
// 二維數(shù)組
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };// 指定了維度的相同數(shù)組。
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };// 帶有字符串元素的多維數(shù)組。
string[,] array2Db = new string[3, 2]
{ {"one", "two" }, { "three", "four"},{ "five", "six" }
};// 三維數(shù)組
int[,,] array3D = new int[,,]
{ { { 1, 2, 3 }, { 4, 5, 6 } },{ { 7, 8, 9 }, { 10, 11, 12 } }
};// 指定了維度的相同數(shù)組。
int[,,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } },{ { 7, 8, 9 }, { 10, 11, 12 } } };// 輸出數(shù)組元素
Console.WriteLine(array2D[0, 0]);
Console.WriteLine(array2D[0, 1]);
Console.WriteLine(array2D[1, 0]);
Console.WriteLine(array2D[1, 1]);
Console.WriteLine(array2D[3, 0]);
Console.WriteLine(array2Db[1, 0]);
Console.WriteLine(array3Da[1, 0, 1]);
Console.WriteLine(array3D[1, 1, 2]);
3,交錯數(shù)組:
交錯數(shù)組也是一個數(shù)組,但數(shù)組元素也是數(shù)組,元素大小可以不同。交錯數(shù)組稱為是數(shù)組的數(shù)組,因此其元素為引用類型且被初始化為 null。在交錯數(shù)組中可以混用交錯數(shù)組和多維數(shù)組,所以在聲明和訪問元素的方式上和一維、多維數(shù)組不同。
using System; class ArrayTest
{static void Main(){// 聲明包含兩個元素的交錯數(shù)組,并初始化元素 int[][] arr = new int[][]{new int[5] { 1, 3, 5, 7, 9 },new int[4] { 2, 4, 6, 8 }};// 循環(huán)語句輸出數(shù)組 for (int i = 0; i < arr.Length; i++){Console.Write("Element({0}): ", i);for (int j = 0; j < arr[i].Length; j++){Console.Write("{0}{1}", arr[i][j], j ==(arr[i].Length - 1) ? "" : " ");}Console.WriteLine();}}
}/* 輸出Element(0): 1 3 5 7 9Element(1): 2 4 6 8
*/
區(qū)別總結(jié)
一維數(shù)組和多維數(shù)組的區(qū)別:多維數(shù)組是對一維數(shù)組下標(biāo)訪問的一種改變, 例如 int[,] array2D = { { 1, 2 }, { 3, 4 } }; 等價于 int[] array2 = { 1, 2, 3, 4 };當(dāng)以1為基準(zhǔn),二維數(shù)組arr2[][]和一維數(shù)組arr1[]的下標(biāo)訪問轉(zhuǎn)換符合: arr2[i][j] = arr1[(i - 1)*n - i * (i - 1) / 2 + j - i];編譯器會自動采用這種算法。
交錯數(shù)組和一維、多維數(shù)組的區(qū)別:交錯數(shù)組本質(zhì)也是數(shù)組,只不過區(qū)別于其它數(shù)組的是交錯數(shù)組的每個元素又是一個數(shù)組,也就是數(shù)組里面再嵌套數(shù)組這種邏輯。
結(jié)語
?? 以上就是 C# 中一維、多維及交錯數(shù)組的區(qū)別總結(jié),希望能夠?qū)Υ蠹矣兴鶐椭?。望大家多多支?#xff0c;你們的支持就是筆者創(chuàng)作最大的動力!