解析C#数组
来源:互联网 发布:win10怎么升级软件 编辑:程序博客网 时间:2024/06/08 10:24
数组是一种数据结构,他使用同一类型的多个对象,其元素在内存中连续存放。C#用特殊的记号如中括号"[]"声明和使用数组。
数组的声明:
先定义数组中元素的类型,其后是一个方括号和一个变量名,如:Int[] myArray;
数组的初始化:
数组是引用类型,必须给它分配堆上的内存。对此,应使用new运算符,并且指定数组中元素的类型和元素的数量来初始化数组的变量。如:myArray=new int[4];
在指定了数组的大小后就不能重新设置数组的大小。如果事先不知道数组中应包含多少个元素,得使用集合。
初始化方式:
(1) int[] myArray;myArray=new int[4];
(2) int[] myArray=new int[4];
(3) int[] myArray=new int[4]{4,7,11,2};//数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用。
(4) int[] myArray=new int[]{4,7,11,2};//不指定数组的大小。编译器会自动计算元素个数。
(5) int[] myArray={4,7,11,2};//简化形式,编译生成的代码与前4种相同。
访问数组元素:
(1) 通过索引器访问:
Int[] myArray=new int[]{4,7,11,2};
Int v1=myArray[0];//读取第一个元素
Int v2=myArray[1];//读取第二个元素
myArray[3]=44;//为第四个元素赋值
//若使用错误的索引值(访问不存在的元素),则抛出IndexOutOfRangeException异常
(2) 不知道数组元素个数的访问方式:
For(int i=0;i<myArray.Length;i++)
{Console.WriteLine(myArray[i]);}
(3) 使用foreach语句访问:
Foreach(int val in myArray)
{console.WriteLine(val);}
//foreach主要通过IEnumerable和IEnumerator接口实现。
使用引用类型:
不但能够声明预定义类型的数组,还可以声明定制类型的数组。
注意:如果数组中的元素是引用类型,就必须为每个数组元素分配内存(分配内存即对象实例化)。若使用了数组中未分配内存的元素,则会抛出NullReferenceException类型的异常。
声明方式与预定义类型的声明方式一样,初始化方式则必须使用实例化后的自定义类。如:
Person[] myPersons={new Person(“f1”,”l1”),new Person(“f2”,”l2”)};
//Person为一个用户自定义类
// Person(“f1”,”l1”)为person类的构造函数,第一参数表示firstname,第二个参数表示lastname
多维数组:
申明二维数组时需要在括号中加上一个逗号。数组在初始化时应指定每一维的大小(也称为阶)。访问数组则采用两个整数作为索引器来访问。如:
Int[,] twodim=new int[3,3];//二维数组声明,数组声明之后,不能修改其阶数
Twodim[0,0]=1;//二维数组访问
初始化也可以采用下列方式:
Int[,] twodim={{1,2,3},{4,5,6},{7,8,9}};
使用数组初始化器时,必须初始化数组的每个元素,不能遗漏任何元素。
三维数组声明和初始化如下:
Int[,,] threedim={{{1,2},{3,4}},{{5,6},{7,8}},{{9,10},{11,12}}};
锯齿数组:
二维数组的大小是矩形的。而锯齿数组的大小设置比较灵活,在锯齿数组中,每一行都可以有不同的大小。
锯齿数组又称数组中的数组
在声明锯齿数组时,要一次放置开闭括号。在初始化锯齿数据时,先设置该数组包含的行数。定义各行中元素个数的第二个括号设置为空,以为这类数组的每一行包含不同的元素数。之后为每一行指定行中的元素个数,如:
Int[][] jagged=new int[3][];//二维数组声明使用的是int[,],注意区别
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};
迭代锯齿数组中所有元素的代码可以使用嵌套for循环。在外层for循环中,迭代每一行,内层的for循环迭代一行中的每个元素:
For(int row=0;row<jagged.Length;row++)
{
For(int element=0;element<jagged[row].Length;element++)
{Console.WriteLine(jagged[row].[element].toString());}
}
- 解析C#数组
- C#解析Json值中含数组
- C# string byte数组转换解析
- C# string byte数组转换解析
- C# 低版本Newtonsoft解析JSON数组
- C#中下限非零的数组解析
- 解析数组
- 解析数组
- C# 数组
- C#数组
- C#数组
- c# 数组
- C#数组
- C#数组
- c#数组
- C# 数组
- C#数组
- C#数组
- 悼念图灵奖得主、ML语言之父Robin Milner
- C#语言 第三部分 集合框架 IList,IList——向量(2)
- 内存相关分享
- video4linux——包含yuv转rgb
- Exponentiation hdu 1063 java
- 解析C#数组
- yuv420
- 推荐一个基于MFC实现的操作XML文件的类
- RGB图像转灰度图
- gdb查看内存
- ppm图像格式
- 一分钟彻底清除电脑中的垃圾
- 批量文本处理导入导出
- .net地址栏传递多个参数并编码