1、C#数组(Array)
简述:数组是一个存储相同类型有序集合,数组是用来存储数据的集合,数组中的每项都按索引进行访问,索引是要给数字,用于设置对象子数组中的存储位置。
1.1声明数组语法:
datatype[] arrayName;
- datatype用于指定被存储在数组中的元素类型。
- [ ]指定数组的秩(维度),秩指定数组的大小。
- arrayName 指定数组的名称。
例如:
double[] arrayStrudent;
1.2初始化数组
声明一个数组不会在内存中初始化数组,初始化数组变量是,你可以赋值给数组,数组是一个引用类型,所以需要使用New关键字创建数组实例。
例如:
int[] numberArr=new int[5]; string[] strArr=new String[5];
1.3赋值给数组
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class 数组 { public static void Main(string[] age) { } public void Get() { #region 赋值给数组 //1、可以通过使用索引号赋值给单独数组元素,示例: int[] numberArr = new int[5];//固定数组长度的 numberArr[0] = 100; //2、可以在声明数组的同时给数组赋值,示例: int[] numberArr2 = { 10, 20, 30, 40, 50 };//初始化值长度解决数组长度 //3、可以创建并初始化一个数组,示例: int[] numberArr3 = new int[5] { 11,12,13,14,15};//什么固定长度数组并且初始化赋值了 //4、以上情况,可以省略数组的大小,示例: int[] numberArr4 = new int[] { 11, 22, 33, 44, 55 };//声明的数组可以省略固定长度,后面初始化的值决定数组大小 #endregion } } }
1.4访问数组元素
元素是通过带索引数组名称来访问的
注意一、索引超出数组界限错误
由于数组下标从0开始,所以访问索引最大是数组最大长度-1
2、多维数组
简述:数组中的每个数据都由多个元素组成,这样的数组称为多维数组。
2.1多维数组定义
数据类型[,,...]数组名; //创建多维数组初始化 数组类型[,,...]数组名=new 数据类型[m,n,..]{,,...},{,,...};
示例:同学的英语、数学、语文成绩分数

#region 多维数组 要求:输出学生的数学、语文、英语成绩 //定义数组 int[,] student = {{11,22,33},{22,22,33} }; for (int i = 1; i <= student.GetLength(0);i++ ) { Console.WriteLine("第{0}位同学数学、语文、英文成绩分别如下:",i); for (int j = 1; j <= student.GetLength(1);j++ ) { Console.WriteLine(student[i-1,j-1]); } } #endregion
3、锯齿型数组
也称为数组中的数组
数组类型[][] 数组名=new 数组类型[数组长度][]
示例: 输渣男们的女朋友名字
完整代码如下:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 public class 数组 10 { 11 12 public static void Main(string[] age) 13 { 14 数组 d = new 数组(); 15 d.Get(); 16 Console.ReadLine(); 17 } 18 19 20 public void Get() 21 { 22 #region 声明数组+赋值+输出 23 ////声明 24 //int[] intArr = new int[10]; 25 ////索引初始化 26 //for (int i = 0; i < intArr.Length; i++) 27 //{ 28 // intArr[i] = i *2; 29 //} 30 31 ////通过索引位置访问数组元素值,示例:范围第二个元素值 32 //Console.WriteLine("通过索引访问数组第二个值{0}",intArr[1]); 33 34 ////通过循环遍历数组所有元素 35 //Console.WriteLine("遍历数组开始:"); 36 //for (int k = 0; k < intArr.Length;k++ ) 37 //{ 38 // Console.WriteLine("intArr数组第【{0}】个元素的值是【{1}】", k + 1, intArr[k]); 39 //} 40 41 #endregion 42 43 #region 赋值给数组 44 45 //1、可以通过使用索引号赋值给单独数组元素,示例: 46 int[] numberArr = new int[5];//固定数组长度的 47 numberArr[0] = 100; 48 49 //2、可以在声明数组的同时给数组赋值,示例: 50 int[] numberArr2 = { 10, 20, 30, 40, 50 };//初始化值长度解决数组长度 51 52 //3、可以创建并初始化一个数组,示例: 53 int[] numberArr3 = new int[5] { 11,12,13,14,15};//什么固定长度数组并且初始化赋值了 54 55 //4、以上情况,可以省略数组的大小,示例: 56 int[] numberArr4 = new int[] { 11, 22, 33, 44, 55 };//声明的数组可以省略固定长度,后面初始化的值决定数组大小 57 58 #endregion 59 60 #region 多维数组 要求:输出学生的数学、语文、英语成绩 61 ////定义数组 62 //int[,] student = {{11,22,33},{22,22,33} }; 63 //for (int i = 1; i <= student.GetLength(0);i++ ) 64 //{ 65 // Console.WriteLine("第{0}位同学数学、语文、英文成绩分别如下:",i); 66 // for (int j = 1; j <= student.GetLength(1);j++ ) 67 // { 68 // Console.WriteLine(student[i-1,j-1]); 69 // } 70 //} 71 72 #endregion 73 74 #region 要求:输渣男们的女朋友名字 75 //声明二维数组并且初始化赋值 76 string[][] SG_NPY = { new string[] { "小美", "小爱", "小妞" }, 77 new string[] { "小甜", "小妹" }, 78 new string[] { "笑笑", "幽幽", "优优", "小熊" }, 79 new string[] { "小爱", "小美", "小熊" } }; 80 81 //循环二维数组 82 for (int i = 0; i < SG_NPY.Length;i++ ) 83 { 84 Console.Write("第{0}位渣男的女朋友名字:", i); 85 string strName = string.Empty; 86 for (int j = 0; j < SG_NPY[i].Length;j++ ) 87 { 88 if (string.IsNullOrEmpty(strName)) 89 strName = SG_NPY[i][j]; 90 else 91 strName +=","+SG_NPY[i][j]; 92 } 93 Console.Write(strName); 94 Console.WriteLine(); 95 } 96 #endregion 97 } 98 } 99 }
4、数组常用的方法
方法 | 描述 |
Clone | 创建数组的浅表副本 |
Copy | 将某数组内的元素复制到另外一个数组中 |
CopyTo | 将当前一维数组的元素复制到另外一个数组中 |
GetLength | 设置数组指定维度的元素 |
IndexOf | 返回一维获取数组或部分数组中某个匹配项的索引 |
LastIndexOf | 返回数组中某匹配项的最后一个索引 |