所謂數組,是有序的元素序列,在C#語言中,數組可以存放任意多個同類型數據,但是一個數組在創建后,它的長度將固定不變,不能增加、也不能減少數據,這就是它的定長性。所有就有了更靈活的集合,集合能夠保存的數據不定長,可以在程序執行的過程中,不斷的發生變化,任意增加、或減少、或修改。在功能上,數組能實現的所有功能,集合都能實現,反之則不行。
在聲明與賦值方面:
數組聲明:數據類型[] 變量名 例如:
int[] numbers =new int[5]; //定義了一個numbers變量,它是一個數組可以存放5個int類型的數據
集合聲明:List<數據類型>變量名; 例如:
List<int> nums=new List<int>();
集合還可以任意添加、刪除、修改元素,實現如下:
//添加元素:變量名.Add(要添加的數據); List<int> nums=new List<int>{3,5,7}; nums.Add(3); //插入元素:變量名.Insert(索引,要插入的數據); List<int> nums=new List<int>{3,5,7}; nums.Insert(1,10); //刪除元素:變量名.RemoveAt(索引); -->刪除指定索引位置的元素 //變量名.Remove(數據); -->刪除集合中與填寫的數據相同的第一個匹配項 List<int> nums=new List<int>{1,1,2,3,5}; nums.RemoveAt(2); //刪除索引為2的元素 nums.Remove(1); //刪除與數據1相同的第一個元素 //修改元素:變量名[索引]=值; //獲取元素數量(獲取集合長度):變量名.Count
示例1:數組分析器
Console.Write("請輸入數組的長度:"); int len = int.Parse(Console.ReadLine()); int[] nums = new int[len]; #region 給數組賦值 for (int i=0;i<len;i++) //給數組賦值 { Console.Write("請輸入數組的第"+(i+1)+"項:"); nums[i] = int.Parse(Console.ReadLine()); } Console.Clear(); #endregion #region 對數組進行排序並輸出 Console.WriteLine("您輸入的數字排序后如下:"); //對數組進行排序並輸出 for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) { if (nums[i] > nums[j]) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } } Console.Write(nums[i]+"\t"); } Console.WriteLine(); #endregion #region 判斷奇數並輸出 Console.WriteLine("其中,以下數字是奇數:"); //判斷奇數並輸出 for (int i = 0; i < len; i++) { if (nums[i] % 2 != 0) { Console.Write(nums[i]+"\t"); } } Console.WriteLine(); #endregion #region 判斷質數並輸出 Console.WriteLine("以下數字是質數:"); //判斷質數並輸出 bool isFind=true; for (int i = 0; i < len; i++) { for (int j = 2; j < nums[i]; j++) { if (nums[i] % j == 0) { isFind = false; break; } } if(isFind) Console.Write(nums[i]+"\t"); isFind = true; } #endregion Console.ReadLine();
示例2:集合管理器
List<int> arrays = new List<int>(); while (true) //無限循環 { Console.WriteLine("集合中現有內容如下:"); Console.WriteLine("==============================================="); if (arrays.Count == 0) //當集合里沒有值的時候 { Console.WriteLine("集合中沒有元素"); } else { foreach (int array in arrays) { Console.Write(array + "\t"); //遍歷,顯示集合的值 } Console.WriteLine(); } Console.WriteLine("==============================================="); Console.WriteLine("1.添加數據"); //獲取用戶輸入 Console.WriteLine("2.刪除數據"); Console.WriteLine("3.修改數據"); Console.WriteLine("4.升序排序"); Console.WriteLine("0.退出程序"); Console.Write("請選擇(0-4):"); string input = Console.ReadLine(); if (input == "0") //用戶輸入0,則推出程序 { break; } else if (input == "1") //用戶輸入1,則添加數字 { Console.Write("請輸入要添加的數字:"); arrays.Add( int.Parse(Console.ReadLine())); } else if (input == "2") //用戶輸入2,則刪除數字 { if (arrays.Count == 0) { Console.Write("集合中沒有可刪除的數據,按回車繼續"); Console.ReadLine(); } else { Console.WriteLine("請輸入你要刪除的數據(只會刪除第一個匹配項):"); arrays.Remove(int.Parse(Console.ReadLine())); } } else if (input == "3") //用戶輸入3,則修改數字 { if (arrays.Count == 0) { Console.Write("集合中沒有任何數據可以修改,按回車鍵繼續"); Console.ReadLine(); } else { Console.Write("請輸入要刪除的下標0-" + (arrays.Count - 1) + ":"); int index = int.Parse(Console.ReadLine()); if (index > (arrays.Count - 1)) { Console.Write("輸入錯誤,下標超出范圍,按回車鍵繼續"); Console.WriteLine(); } else { Console.Write("請輸入新的數據:"); arrays[index] = int.Parse(Console.ReadLine()); } } } else if (input == "4") //用戶輸入4,則排序 { if (arrays.Count == 0) { Console.Write("集合中沒有元素,回車繼續"); Console.ReadLine(); } for (int i = 0; i < arrays.Count; i++) { for (int j = i + 1; j < arrays.Count; j++) { if (arrays[i] > arrays[j]) { int temp = arrays[i]; arrays[i] = arrays[j]; arrays[j] = temp; } } } } Console.Clear(); //每一個循環結束后清屏