




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C#中多维数组和交错数组的区别多维数组的声明
在声明时,必须指定数组的长度,格式为type[lenght,lenght,lengh,...]
int[,]test1=newint[3,3];
或声明时即赋值,由系统推断长度
int[,]test1={
{1,2,3},
{1,2,3},
{1,2,3},
};
交错数组的声明
声明时,至少需要指定第一维的长度,格式为type[][][]...
int[][]test1=newint[5][];
int[][]test1=newint[][];//注意,此的声明方式是错的
或者声明时即赋值,由系统推断长度
int[][]test1={
newint[]{1,2,3,4},
newint[]{1,2,3},
newint[]{1,2}
};
多维数组与交错数组二者的相同、区别
两者声明时,都必须指定长度,多维数组必须指定每一维的长度,而交错数组需要至少需要指定第一维的长度。
多维数组声明时,符号是这样的[,,,,],逗号在方括号[]中,每一维长度用逗号分隔。而交错数组每一维独立在[]中
当你想指定数组长度时,只能在等号右侧指定,int[,]test1=newint[3,3]是正确的;int[6,4]test1=newint[6,4]是错误的;
下面以代码形式说明
大小不一致的多维数组会发生错误
int[,]test1={
{1,2,3,4},
{1,2,3},
{1,2}
};//这样是错的,长度必须一致
int[,]test1=newint[4,5]{
{1,2,3,4,5},
{1,2,3},
{1,2,3}
};//这样也是错误的,长度必须一致,必须为每一个位置赋值
这一点C#与C语言有所区别,C语言可以不全赋值,没有赋值的位置系统默认为0。
下面的方法是正确的
int[,]test1={
{1,2,3},
{1,2,3},
{1,2,3}
};
初始化交错数组
上面已经说了声明一个交错数组的方法
int[][]test1={
newint[]{1,2,3,4},//newint[4]{1,2,3,4}
newint[]{1,2,3},//newint[3]{1,2,3}
newint[]{1,2}
};
注意,在里面有newint[],这正是交错数组的特性。
交错数组是由数组构成的数组,交错数组要求为内部的每个数组都创建实例。
即交错数组的每一维都是一个实例,每一个实例为一个数组。
数组的长度是固定的
无论多维数组还是交错数组,长度都是固定的,不能随意改变。
获取数组的长度
使用对象.Length获取数组的长度,需要注意的是,多维数组的长度是每一维相乘,即元素总个数。
int[,]test1={
{1,2,3},
{1,2,3},
{1,2,3}
Console.WriteLine(test1.Length);
输出为9
而交错数组的长度则是内部组成的数组的个数,例如
int[][]test1={
newint[]{1,2,3},
newint[]{1,2,3},
newint[]{1,2,3},
Console.WriteLine(test1.Length);
输出为3
多维数组、交错数组的方法无差别,都具有Sort()、Clear()等方法,这里不再赘述,关于数组的高级用法,请查阅
/Special/265.htm
下列为System.Array类的属性
由于系统提供的方法比较多,有兴趣请查阅
/zh-cn/dotnet/api/system.arrayview=netframework-4.7.2
使用数组初始化类型
在C#中有lambda、匿名类等等,C#5.0/6.0后,给声明类、声明类型类型、赋值等有了很方便的操作方法。下面举例测试。
使用数组对集合、集合泛型等初始化
声明一个List泛型集合
usingSystem.Collections.Generic;//头部引入
//main中的代码
staticvoidMain(string[]args)
Liststringlist=newListstring
Console.ReadKey();
}
那么,给集合list增加一个项,用Add()方法
staticvoidMain(string[]args)
Liststringlist=newListstring
//增加
list.Add("a");
list.Add("b");
list.Add("c");
list.Add("d");
list.Add("e");
list.Add("f");
list.Add("g");
Console.ReadKey();
}
利用数组来添加新项
Liststringlist=newListstring(){"a","b","c","d","e","f"};
Liststringlist=newListstring{"a","b","c","d","e","f"};
//以上两种方法都可以,注意后面有没有()
上面的例子利用数组直接在集合声明时初始化,但是不能很好的声明骚操作。
试试交错数组
1,在program类所在的命名空间中写一个类
publicclassTest
publicintx;
publicinty;
publicvoidWhat()
Console.WriteLine(x+y);
}
2,在Main方法中
staticvoidMain(string[]args)
ListTestlist=newListTest()
newTest{x=1,y=6},
newTest{x=8,y=6},
newTest{x=4,y=8},
newTest{x=5,y=7},
newTest{x=3,y=3},
newTest{x=6,y=6},
newTest{x=9,y=666},
newTest{x=7,y=6},
Console.ReadKey();
}
完整代码如下
publicclassTest
publicintx;
publicinty;
publicvoidWhat()
Console.WriteLine(x+y);
classProgram
staticvoidMain(string[]args)
ListTestlist=newListTest()
newTest{x=1,y=6},
newTest{x=8,y=6},
newTest{x=4,y=8},
newTest{x=5,y=7},
newTest{x=3,y=3},
newTest{x=6,y=6},
newTest{x=9,y=666},
newTest
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论