陣列宣告
- C# 的陣列索引起始值是0,若宣告一個 n 大小的陣列,表示該陣列含有 n 個元素,其索引值範圍: 0 ~ n-1 。
- VB 的陣列索引起始也是0,若宣告一個 n 大小的陣列,表示該陣列含有 n+1 個元素,其索引值範圍: 0 ~ n 。
string[] array1 = new string[2]; string[] array2 = { "男", "女" }; string[] array3 = new string[2] { "男", "女" }; string[] array4 = new string[] { "男", "女" };
Dim array1(2) As String Dim array2() As String = {"", "男", "女"} Dim array3() As String = New String(2) {"", "男", "女"} Dim array4() As String = New String() {"", "男", "女"}
陣列存取
array1[0] = "男"; array1[1] = "女";
array1(0) = "" array1(1) = "男" array1(2) = "女"
陣列排序
Array.Sort(欲排序的陣列);
PS. 如果陣列中的存放的是自訂型別,必須實作 IComparable 介面,使用 Array.Sort 才有意義。
陣列搜尋
Array.BinarySearch(陣列名稱,要找的元素) //用 Binary Search, 需先 Sort Array.IndexOf(陣列名稱,要找的元素) //用 Linear Search
string[] dinosaurs = { "People", "Apple", "Tiger", "Monkey", "Dog", "Elephent"}; int index = Array.BinarySearch(dinosaurs, "Cat"); // -1 index = Array.BinarySearch(dinosaurs, "Tiger"); // 2 index = Array.BinarySearch(dinosaurs, "Apple"); // -1 index = Array.BinarySearch(dinosaurs, "ZOO"); // -7 Array.Sort(dinosaurs); index = Array.BinarySearch(dinosaurs, "Cat"); // -2 index = Array.BinarySearch(dinosaurs, "Tiger"); // 5 index = Array.BinarySearch(dinosaurs, "Apple"); // 0 index = Array.BinarySearch(dinosaurs, "ZOO"); // -7
陣列間的型別轉換
例如要將一個string型別陣列裡面的元素轉到int型別陣列,通常會這樣做:
string[] strArray = new string[] { "1", "2", "3", "4", "5" }; int[] intArray = new int[5]; for (int i = 0; i < strArray.Count(); i++) { intArray[i] = Convert.ToInt32(strArray[i]); }
但如果是 .Net Framework 3.0 以上可以這樣做:
string[] strArray = new string[] { "1", "2", "3", "4", "5" }; int intArray = Array.ConvertAll<string, int>(strArray, int.Parse);
陣列合併
合併二個陣列,可以使用苦力將二個陣列中的元素,一個個複製到大的陣列。 如果使用 .Net 3.5 以上,則可以使用 System.Linq 的擴充功能 Union 來合併二個陣列。 而且這個方法會自動剔除重複的元素。
char[] array1 = { 'x', 'y', 'z' }; char[] array2 = { 'a', 'b', 'y' }; var result = array1.Union(array2).ToArray(); foreach (char item in result) { Console.WriteLine(item); // z, y, z, a, b }
沒有留言:
張貼留言