数组是 引用类型;
int[ ] 中 int 也是类型,所以数组可以认为是复合类型
数组名最好加 s
数组是集合,集合不一定是数组
数组的元素 的类型 既可以是引用类型也可以是值类型;分别称为:引用类型数组 和 值类型数组。
创建数组实例后,其每个元素都有默认值,string 的为空字符串,int 的为 0 ,bool 的为 false,引用类型的为 null;
不可变数组是一个存储相同类型元素的固定大小的顺序集合
//声明数组:
int[ ] arrayName;
//•int 用于指定被存储在数组中的元素的类型。
//•指定数组的秩 [维度] 。秩指定数组的大小。
//•arrayName 指定数组的名称。
•数据类型[] 数组名 = {值 1, 值 2, …}
int[ ] yk = {1,2,3}
•数据类型[] 数组名 = new 数据类型[长度]{值 1,值 2,…}
int[ ] yk = new int [3]{1,2,3};
•数据类型[] 数组名 = new 数据类型[长度可忽略]{值 1,值 2,…}
int[ ] yk = new int [ ]{1,2,3};
•数据类型[] 数组名 = new 数据类型[长度];
//如果不给元素赋值会给一个当前数据类型的默认值
int[ ] yk = new int [5];
yk[0] = 10;
yk[2] = 20;
//空数组
int[ ] yk = { };
数组名.Length //数组的长度
GetLength //对于多维数组,获取指定维度的长度
int[,] myArray = new int[3, 4];
// 获取第一维(行)的长度
int rows = myArray.GetLength(0);
// 获取第二维(列)的长度
int cols = myArray.GetLength(1);
数组名.Sum() //数组的和
数组名.Max //数组的最大值
数组名.Min //数组的最小值
数组名.Append //末尾追加
C# 中的数组本身是固定长度的,不支持直接使用 Append 方法
数组名 = 数组名.Append(4).ToArray() //使用ToArray,间接使用Append追加
数组名.Where //筛选,返回可枚举对象
//筛选出符合item>100的元素,然后通过ToArray组合成新的数组
var arr = 数组名.Where((item) => {
return item>100
}).ToArray();
数组名.GetValue(2) //获取指定索引位置的<元素
数组名.SetValue(2) //设置数组中指定索引位置的元素
数组名.Contains //是否包含某个元素,返回bool
数组名.Rank //获取数组的维数(佚)
数组名.CopyTo //复制
参数1:把复制的内容放到哪个数组中
参数2:从源字符串哪个索引位置开始复制
str. CopyTo(chars,1); //把数组str从索引1开始放到数组chars中
数组名.Clone //克隆,有装箱,返回object类型,建议克隆后强转
数组名.ElementAt //等于 数组名[ ]
数组名.First //数组第一个元素
数组名.Last //数组最后一个元素
数组名.Distinct //去除重复元素
数组名.GetType //获取对象的运行时类型
多维数组,超过1维,判断是几维就看 [ ] 中有几个** ,**
//[行,列]
int [, ] yk =new int [数组个数,数组元素个数]
//如2行2列:
int [, ] yk =new int [,]{1,2},{3,4};
// {1,2}
// {3,4}
int [,,] strArray =new int[数组页数,数组个数,数组元素个数]
//如2页2行2列
int [,,] strArray =new int[2,2,2]{ {{1,2},{1,2}} , {{5,6},{5,6}} }
// {1,2}
// {1,2}
//
// {5,6}
// {5,6}
//三维数组访问元素:
int val = a[2,2,2];
//三维数组修改元素:
a[2,2,2]=10;
int[] a = new int[]{1, 2};
// var的隐式推断,因为可以从 {1,2} 推断出数组时int类型
var a = new []{1, 2}; //int[] --> var
交错数组就是数组嵌套
int [][] scores = {new int [2] {1,2}, new int[3] {1,2,3}};
//选中第一个数组中的“2”:
int a = scores[0][1];
//第一个[]: 就是有几个嵌套数组
//第二个[]: 有几个元素
int [][] scores = new int[3][];
scores[0] = new int[]{1,2};
scores[1] = new int[]{1,2,3};
scores[2] = new int[]{1,2,3,4};
在某些情况下,即使某个对象不是数组的基类型,也可以把它赋值给数组元素。这种情况叫作 数组协变(array covariance)。在下面的情况下可以使用数组协变。
如:声明了两个类,A和B,其中B类继承自A类。最后一行展示了把类型B的对象赋值给类型A的数组元素而产生的协变:
//1.声明一个父类A和子类B
//2.在主函数中定义一个数组A[]
class A {...}
class B: A {...}
A[] AArray1 = new A[3];
A[] AArray2 = new A[3];
// 普通:将A类型的对象赋值给A类型的数组
AArray1[0] = new A();
AArray1[1] = new A();
AArray[2] = new A();
// 协变:将B类型的对象赋值给A类型的数组
AArray2[0] = new B();
AArray2[1] = new B();
AArray2[2] = new B();
是一个抽象类
是 C# 中所有数组的基类,它是在 System 命名空间中定义 提供了各种用于数组功能的属性和方法。
//正常创建
int[] intArray = new int[3];
intArray[0] = 886;
//用Array基类创建
Array intArray = Array .CreateInstance(typeof(int), 3); //基类
intArray.SetValue(886,0); //把886赋给第一个数
int[,] intArray = new int[2,2]; //正常创建二维数组
intArray[0, 0] = 100;
intArray[0, 1] = 200;
Console.WriteLine(intArray[0,0]);
Array intArray= Array .CreateInstance(typeof(int), 2,2); //用Array创基类创建
intArray.SetValue(100,0,0);
intArray.SetValue(200,0,1);
字符串.ToCharArray(); //把字符串分割为一个字符数组
.ToArray(); //将一些可枚举的对象转换为数组
.Reverse(); //反转数组
Indexof //查找是否存在于数组中,如果存在,返回元素索引,如果不存在返回false
Array .Indexof(intArray,886); //元素1:数组名 元素2:要查询的元素
FindAll //从给定的数组中查找并返回所有满足特定条件的元素,然后将这些元素组成一个新的数组返回。
Find //查找一个匹配的元素
FindLast //查找最后一个匹配的元素
FindIndex //查找一个匹配的元素的索引
FindLastIndex //查找最后一个匹配的元素的索引
arr a = Array. Find (arr,(item) => {
return item==200;
} //查找其中值==200的元素
arr.Find(item => item == 200); //简写
arr[] a = Array. Find (arr,(item) => {
return item==200;
} //查找其中所有值==200的元素然后将这些元素组成一个新的数组
arr.FindIndex(item => item == 200); //FindIndex 简写
Count(); //数组元素数
Sort //从小到大排序 (改变自身)
Clear //将某个范围内的所有元素设为初始值
//参数1:数组名
//参数2: 从索引几开始
//参数3: 清空几个
Array .Clear(数组名,0,2); //将从索引“0”开始,长度为2的数重置为默认值
Copy //静态方法深复制数组内容到另一个数组
//参数1:源数组
//参数2: 目标数组
//参数3: 从索引几开始复制
Array.Copy(源数组,目标数组,0)
ForEach //循环
//Action arr = () => {} 拉姆达表达式(回调函数)
Action 是一种委托类型,用于表示没有返回值的方法
//参数1.数组
//参数2.拉姆达表达式(回调函数)
Array.ForEach (arr,(item) => {
}); //为数组 arr 中的每一个元素 item 执行 {} 中的函数
Exists //包含,返回bool
Array.Exists (arr,(item) => {
if (item>10){
return true;
}else{
return false;
}
});
Array.ConvertAll //数组类型转换,不会修改自身
//参数1. 数组名
//参数2. 使用的转换方法
Array.ConvertAll(strings, int.Parse);
Concat //拼接数组,返回 接口IEnumberator 类型
Insert //插入