数组简单总结
* 多维数组
+ 可以只声明
+ 可以在声明的时候开辟空间.
+ 如果在声明的时候就初始化的话必须对每一个元素初始化.
** 二维
定义:int [,] twoDim = new int[3,3];
错误形式: int[,] twoDim = new int[3,];即每一维都必须指定否则无法分配确定空
间
** 三维
定义:int[,,] threeDim = new int[,,];
* 锯齿数组
定义: int[][] jagged = new int[3][];
注意第二维可以不写,这就是锯齿所在.
例如:
int[][] jagged = new int[3][];
jagged[0]=new int[2]{1,2};
jagged[1] = new int[6] {3,4,5,6,7,8 };
jagged[2] = new int[3] { 9,10,11};
* Array类
创建数组: Array arr = Array.CreateInstance(typeof(int),5);
赋值:
for(int i=0;i<5;i++)
arr.SetValue(valueAtI,i);//valueAtI是int类型的值,i为索引
强制转换: int[] arr1 = (int[])arr;
** Clone方法
*** 如果数据是值类型,那么赋值值
例子:
int [] intArray1 = {1,2};
int [] intArray2 = (int[])intArray1.Clone();
*** 如果数据是引用类型,只复制引用
例子:
public class Person
{
public string name;
public age;
}
Person persons[]=
{
new Person{name ="luffe",age = 16 },//x
new Person{name ="zoro" ,age = 18 }//y
}
Person[] personsClone =(Person[])persons.Clone();
personsClone.SetValue(new Person{name ="sanji",age= 21 }//z);
那么现在persons中保存的是x,y的值,而personsClone保存的是x,z的引用
*** 那么如果要克隆后改变原来和克隆后的值
Person[] personsAnotherClone = (Person [])persons;
Person p = personsAnotherClone.ElementAt(0);
p.name = "robin",p.age = 19;
那么现在persons中的x也变为了{name="robin",age=19}
** Sort方法
采用的是快速排序
string names ={"sanji","zoro","luffe","robin"}
Array.Sort(names);
** ArraySegment
int[] arr = {1,2,3,4,5,6};
var seg = new ArraySegment<int>(arr,0,3);//arr数组的索引0开始的3个元素
for(int i= seg.Offset; i< seg.Offset+ seg.Count; i++)
Console.Write(seg.Array[i]);

浙公网安备 33010602011771号