深刻解析C#中的交織數組與隱式類型的數組。本站提示廣大學習愛好者:(深刻解析C#中的交織數組與隱式類型的數組)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻解析C#中的交織數組與隱式類型的數組正文
交織數組
交織數組是元素為數組的數組。交織數組元素的維度和年夜小可以分歧。交織數組有時稱為“數組的數組”。以下示例解釋若何聲明、初始化和拜訪交織數組。
上面聲明一個由三個元素構成的一維數組,個中每一個元素都是一個一維整數數組:
int[][] jaggedArray = new int[3][];
必需初始化 jaggedArray 的元素後才可使用它。可以以下例所示初始化該元素:
jaggedArray[0] = new int[5]; jaggedArray[1] = new int[4]; jaggedArray[2] = new int[2];
每一個元素都是一個一維整數數組。第一個元素是由 5 個整數構成的數組,第二個是由 4 個整數構成的數組,而第三個是由 2 個整數構成的數組。
也能夠應用初始值設定項用值填湊數組元素,在這類情形下不須要數組年夜小。例如:
jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 }; jaggedArray[1] = new int[] { 0, 2, 4, 6 }; jaggedArray[2] = new int[] { 11, 22 };
還可以在聲明數組時將其初始化,如:
int[][] jaggedArray2 = new int[][] { new int[] {1,3,5,7,9}, new int[] {0,2,4,6}, new int[] {11,22} };
可使用上面的速記格局。請留意:不克不及從元素初始化中省略 new 運算符,由於不存在元素的默許初始化:
int[][] jaggedArray3 = { new int[] {1,3,5,7,9}, new int[] {0,2,4,6}, new int[] {11,22} };
交織數組是數組的數組,是以其元素是援用類型並初始化為 null。
可以以下例所示拜訪個體數組元素:
// Assign 77 to the second element ([1]) of the first array ([0]): jaggedArray3[0][1] = 77; // Assign 88 to the second element ([1]) of the third array ([2]): jaggedArray3[2][1] = 88;
可以混雜應用交織數組和多維數組。上面聲明和初始化一個一維交織數組,該數組包括年夜小分歧的三個二維數組元素。有關二維數組的具體信息,請參閱多維數組(C# 編程指南)。
int[][,] jaggedArray4 = new int[3][,] { new int[,] { {1,3}, {5,7} }, new int[,] { {0,2}, {4,6}, {8,10} }, new int[,] { {11,22}, {99,88}, {0,9} } };
可以如本例所示拜訪個體元素,該示例顯示第一個數組的元素 [1,0] 的值(值為 5):
System.Console.Write("{0}", jaggedArray4[0][1, 0]);
辦法 Length 前往包括在交織數組中的數組的數量。例如,假定您已聲清楚明了前一個數組,則此行:
System.Console.WriteLine(jaggedArray4.Length);
前往值 3。
本例生成一個數組,該數組的元素為數組本身。每個數組元素都有分歧的年夜小。
class ArrayTest { static void Main() { // Declare the array of two elements: int[][] arr = new int[2][]; // Initialize the elements: arr[0] = new int[5] { 1, 3, 5, 7, 9 }; arr[1] = new int[4] { 2, 4, 6, 8 }; // Display the array elements: for (int i = 0; i < arr.Length; i++) { System.Console.Write("Element({0}): ", i); for (int j = 0; j < arr[i].Length; j++) { System.Console.Write("{0}{1}", arr[i][j], j == (arr[i].Length - 1) ? "" : " "); } System.Console.WriteLine(); } // Keep the console window open in debug mode. System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); } }
輸入:
Element(0): 1 3 5 7 9 Element(1): 2 4 6 8
隱式類型的數組
可以創立隱式類型的數組,在如許的數組中,數組實例的類型是從數組初始值設定項中指定的元素揣摸而來的。有關任何隱式類型變量的規矩也實用於隱式類型的數組。
在查詢表達式中,隱式類型的數組平日與匿名類型和對象初始值設定項和聚集初始值設定項一路應用。
上面的示例演示若何創立隱式類型的數組:
class ImplicitlyTypedArraySample { static void Main() { var a = new[] { 1, 10, 100, 1000 }; // int[] var b = new[] { "hello", null, "world" }; // string[] // single-dimension jagged array var c = new[] { new[]{1,2,3,4}, new[]{5,6,7,8} }; // jagged array of strings var d = new[] { new[]{"Luca", "Mads", "Luke", "Dinesh"}, new[]{"Karen", "Suma", "Frances"} }; } }
請留意,在上一個示例中,沒有在初始化語句的左邊對隱式類型的數組應用方括號。另請留意,交織數組就像一維數組那樣應用 new [] 停止初始化。
對象初始值設定項中的隱式類型的數組
創立包括數組的匿名類型時,必需在該類型的對象初始值設定項中對數組停止隱式類型化。鄙人面的示例中,contacts 是一個隱式類型的匿名類型數組,個中每一個匿名類型都包括一個名為 PhoneNumbers 的數組。請留意,對象初始值設定項外部未應用 var 症結字。
var contacts = new[] { new { Name = " Eugene Zabokritski", PhoneNumbers = new[] { "206-555-0108", "425-555-0001" } }, new { Name = " Hanying Feng", PhoneNumbers = new[] { "650-555-0199" } } };