电商发展现状与趋势,网站建设公司推荐乐云seo,广州seo顾问seocnm,哪里有广告设计制作的培训一、简单介绍Array是C#中所有数组类型的抽象基类#xff0c;用于存储固定长度的同类型元素集合。在Visual Studio中#xff0c;数组是最基础的数据结构之一#xff0c;适用于需要快速访问元素的场景。二、数组声明与初始化模板数组的声明需指定类型和维度#xff0c;初始化…一、简单介绍Array是C#中所有数组类型的抽象基类用于存储固定长度的同类型元素集合。在Visual Studio中数组是最基础的数据结构之一适用于需要快速访问元素的场景。二、数组声明与初始化模板数组的声明需指定类型和维度初始化时需指定长度或直接赋值元素。数组类型声明模板说明一维数组类型[] 数组名 new 类型[长度]固定长度的线性集合多维数组类型[] 数组名 new 类型[行, 列]矩形多维数组如二维表交错数组类型[][] 数组名 new 类型[行数][]数组的数组每行长度可变隐式类型数组var 数组名 new[] { 元素1, 元素2 }由元素类型推断数组类型三、代码示例Visual Studio控制台应用以下示例展示一维数组、多维数组的创建与使用// 1. 一维数组存储5个整数int[] numbers new int[5] { 10, 20, 30, 40, 50 };Console.WriteLine(一维数组元素);foreach (int num in numbers){Console.Write(num );// 输出10 20 30 40 50}// 2. 二维数组3行2列的矩阵int[,] matrix new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };Console.WriteLine(\n\n二维数组元素);for (int i 0; i 3; i){for (int j 0; j 2; j){Console.Write(matrix[i, j] );// 输出1 2 / 3 4 / 5 6}Console.WriteLine();}// 3. 交错数组2行每行长度可变int[][] jaggedArray new int[2][];jaggedArray[0] new int[] { 1, 2, 3 };// 第一行3个元素jaggedArray[1] new int[] { 4, 5 };// 第二行2个元素Console.WriteLine(\n交错数组元素);foreach (int[] row in jaggedArray){foreach (int num in row){Console.Write(num );// 输出1 2 3 / 4 5}Console.WriteLine();}四、Array类常用静态方法1. Array.FindIndex()//根据参数2的条件返回第一个满足条件的元素的索引值// FindIndex()的功能已经实现了遍历的功能并且把元素传递到参数2的函数中说明FindIndexT(T[], Int32, Int32, PredicateT)在数组的指定范围内返回第一个符合条件的元素的索引。FindIndexT(T[], Int32, PredicateT)在指定索引后返回第一个符合条件的元素索引。FindIndexT(T[], PredicateT)返回第一个符合条件的元素的索引。示例int[] ages { 1, 2, 3, 4, 5, 6, 7, 8,20,36,29 };bool FindBig18(int v){//v就是每一个元素 ages[i]return v 18;//如果v大于18 返回true 如果v18 返回false}bool FindName(string v){return v 张三;}Console.WriteLine(Array.FindIndex(ages, FindBig18) );//8Console.WriteLine(Array.FindIndex(new string[] {张三,历史,王五,马六 },FindName));//02. Array.FindAll()// 找到满足条件的所有元素返回是一个数组说明FindAllT(T[], PredicateT)返回符合条件的所有元素。示例bool FindEven(int v){return v % 2 0;}int[] arr Array.FindAll(ages,FindEven);3. Array.Foreach()// 循环遍历说明对数组的每个元素执行指定的操作。示例Array.ForEach(arr, v Console.WriteLine(v--------));//遍历出偶数4. Array.Find()//找到满足条件的元素说明FindT(T[], PredicateT)搜索符合条件的第一个元素并返回。示例bool FindStart(string v){return v.StartsWith(ssr);}Console.WriteLine(Array.Find(new string[] { ss, ssr, r, a, b }, FindStart));//ssr5. Array.FindLast()//从后往前找找到第一个满足条件的元素返回其索引值说明FindLastT(T[], PredicateT)返回符合条件的最后一个元素。示例bool FindLast1(string v){return v.StartsWith(ab);}Console.WriteLine(Array.FindLast(new string[] { ss, ssr, r,ab ,abc, b }, FindLast1));//abc6. Array.TrueForAll()//数组内的元素是否都满足条件如果都满足则为true否则false说明定数组中是否所有元素都符合条件。示例bool aa(int v){return v 30;}Console.WriteLine(Array.TrueForAll(ages, aa));//false7. Array.Exists()//数组内是否存在满足条件的元素存在一个条件即可只要存在则为true否则false说明确定数组是否包含符合条件的元素。示例Console.WriteLine(Array.Exists(ages, aa));// true8. Any()//数组中满足条件的元素存在一个即可等同于 Array.Exists()示例string[] names new string[] { ss, ssr, r, ab, abc, b };Console.WriteLine(names.Any(FindLast1));//true9. All()//数组中的所有元素都满足条件整体结果为true 等同于 Array.TrueForAll()示例Console.WriteLine(names.All(FindLast1));//false10. Contains()//数组中是否包含该元素示例Console.WriteLine(names.Contains(abcd)------);//false------11. Concat()//串联两个数组示例string[] ss { 2, 3 };foreach (string item in names.Concat(ss)){Console.WriteLine(item);//串联并遍历两个数组中的元素 并附加上}五、注意事项长度固定数组一旦创建长度不可动态修改。若需动态增减元素建议使用ListT。值类型与引用类型值类型数组如int[]元素直接存储值修改元素不影响原数据。引用类型数组如string[]元素存储对象引用修改元素会改变原对象。多维数组 vs 交错数组多维数组int[,]所有行长度相同内存连续。交错数组int[][]每行长度可不同内存不连续更灵活。越界访问访问数组时若索引超出[0, Length-1]范围会抛出IndexOutOfRangeException需注意边界检查。六、综合示例//1. 查询类中的所有男性//2. 查询类中第一个女性//3. 判断数组中是否全为成年人//4. 查询类中的第一个未成年男性class People{public enum Sex{man 1,woman 2,}public string Name { get; set; }public Sex XingBie { get; set; }public int Age { get; set; }}internal class Program{static void Main(string[] args){People[] p new People[]{new People(){Name张三,Age 25,XingBie People.Sex.man},new People(){Name李四,Age 17,XingBie People.Sex.man},new People(){Name王五,Age 30,XingBie People.Sex.woman},new People(){Name赵六,Age 25,XingBie People.Sex.woman},new People(){Name刘十,Age 22,XingBie People.Sex.man},};//1. 查询类中的所有男性FindAll()bool FindAll(People a){return a.XingBie People.Sex.man;}People[] p1 Array.FindAll(p, FindAll);People[] pp Array.FindAll(p, c c.XingBie People.Sex.man);foreach (People a in p1){Console.WriteLine(a.Name a.Age a.XingBie);}foreach (People a in pp){Console.WriteLine(a.Name a.Age a.XingBie------------);}//2. 查询类中第一个女性 Array.FindIndex()bool FindIndex1(People a){return a.XingBie People.Sex.woman;}Console.WriteLine(p[Array.FindIndex(p, FindIndex1)].Name p[Array.FindIndex(p, FindIndex1)].XingBie);bool Find(People a){return a.XingBie People.Sex.woman;}People p2 Array.Find(p, Find);Console.WriteLine(p2.Name p2.XingBie);//3. 判断数组中是否全为成年人 Array.TrueForAll()bool TrueForAll1(People a){if (a.Age 18){return true;}return false;}bool TrueForAll2(People a){return a.Age 18;}Console.WriteLine(Array.TrueForAll(p, TrueForAll1));Console.WriteLine(Array.TrueForAll(p, TrueForAll2));//4. 查询类中的第一个未成年男性 Array.FindIndex()bool FindIndex2(People a){if (a.XingBie People.Sex.man a.Age 18){return true;}return false;}Console.WriteLine(p[Array.FindIndex(p, FindIndex2)].Name p[Array.FindIndex(p, FindIndex2)].Age);}