所谓数组,是有序的元素序列,在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]+" "); } Console.WriteLine(); #endregion #region 判断奇数并输出 Console.WriteLine("其中,以下数字是奇数:"); //判断奇数并输出 for (int i = 0; i < len; i++) { if (nums[i] % 2 != 0) { Console.Write(nums[i]+" "); } } 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]+" "); 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 + " "); //遍历,显示集合的值 } 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(); //每一个循环结束后清屏