C#的数组初始化在声明数组时将初始值放在大括号{}内。 如果未指定初始值,数组成员将自动初始化为该数组类型的默认初始值。 请阅读数组属性。 如果将数组声明为类型的字段,则在实例化该类型时将该数组设置为默认值null。
一.一维数组初始化
1 .声明数组时初始化。 例如:
int [ ] array=new int [6] { 1,2,3,4,5,6 };
string [ ] string array=new string [3] { ' string1'、' string2'、' string3'}; 2 .可以省略数组的大小。 例如:
int [ ] array=new int [ ] { 1,2,3,4,5,6 };
string [ ] string array=new string [ ] { ' string1'、' string2'、' string3'}; 3 .指定初始值设定项目时,也可以省略new运算符。 例如:
int [ ] array={ 1,2,3,4,5,6 };
string[] stringArray={'string1',' string2',' string3'}; 4 .声明数组变量,但不初始化。 必须使用new运算符,直到将数组分配给此变量。 例如:
int[]天线阵;
array=new int [ ] { 1,2,3,4,5 };
string[] stringArray;
string array=new string [ ] { ' string1'、' string2'、' string3'}; 二.多维数组初始化
1 .声明数组时初始化。 例如:
int[,] array2D=new int[,] { 1,2 }、{ 3,4 }、{ 5,6 };//二维数组
int[,] array3D=new int[,] { { 1,2,3 },{ 4,5,6 } };//三维数组对于二维数组array2D来说,这是一个3行2列的二维数组。 第三行分别为{ 1,2 }、{ 3,4 }和{ 5,6 }三行,每行用大括号{}括起来,第一行{ 1,2 }用0表示,第二行{ 3,4 }用1表示,第三行{ 5,6 }用2表示。
每行的大括号内表示列,对array2D来说,每行为两列,用0、1表示。 这个数组是3行2列。
在中,array2D的第三行第二列元素为array2D[2][1]=6。
二维阵列是二维矩阵,只有x,y两个维度像平面,可以在strArr[x,y]中位于矩阵中的任何元素。 遍历二维矩阵一般需要两个循环。
现在,让我们举几个三维数组的例子:
int[,] array3D=new int[,]{
{ 1,2,3,4 }、{ 5,6,7,8 }、{ 9,10,11,12 }、
{ 13、14、15、16 }、{ 17、18、19、20 }、{ 21、22、23、24 }
(;
相当于int [ 2,3,4 ]。
? 一维目的是指4 )最里面的大括号()内的4个元素。 分别是1、2、3、4或5、6、7、8。
? 第二次元是3。 指二楼内的三个大括号部分。 {1、2、3、4}、{5、6、7、8}和{9、10、11、12}部分。
? 第三维是2。 指一楼中的两个大括号部分。 { 1,2,3,4 }、{ 5,6,7,8 }、{ 9,10,11,12 }、{ 13,14,15,16 }、{ 17,18,19,20 }、{ 21,20 }
int[,] array3D=new int[,] { { 1,2,3 } },{ 4,5,6 },{ 7,8,9 } }; 相当于int [ 3,1,3 ]。
int[,] array3D=new int[,]{{{1}、{2}、{3}、{4}、{6}、{7}、{8}、{9}; 相当于int [ 3,3,1 ]。
int[,] array3D=new int[,] { { 1,2,3 },{ 4,5,6 },{ 7,8,9 } }; 相当于int [ 1,3,3 ]。
三维数组有三个类似立方体的维,必须使用strArr[x,y,z]来确定矩阵中的元素。 因此,如果需要遍历,则必须使用三个嵌套循环。
简单地复盖三维矩阵的示例如下。
for(intI=0; I
{
for(intj=0; Jj
{
for(intk=0; K
{
console.writeline(strarr[I,j,k];
}
}
}
2 .初始化数组时不需要指定级别。 例如:
int[,] array 2d={ 1,2 },{ 3,4 },{ 5,6 }; 3 .声明数组变量,但不初始化。 必须使用new运算符,直到将数组分配给此变量。 例如:
int[,]阵列2d;
array2D = new int[,]{{1,2},{3,4},{5,6}};4. 将数组变量初始化为默认值(交错数组除外)。如:
int[,] array = new int[2,3];5. 可以给数组的元素赋值。如:
array[3,4] = 10;
三、交错数组的初始化
1. 声明一个一维数组,数组中的5个元素都是一维整数数组:
int[][] jiaoArray = new int[5][];初始化jiaoArray数组的元素:
jiaoArray[0] = new int[10];
jiaoArray[1] = new int[9];
jiaoArray[2] = new int[8];
jiaoArray[3] = new int[7];
jiaoArray[4] = new int[6];元素初始化以后就可以使用了。
2. 使用初始值设定项将值填充给数组元素,此时不需要设置数组大小。如:
jiaoArray[0] = new int[]{1,2,3,4,5}; // 初始化数组第一个元素:5个整数组成的数组
jiaoArray[1] = new int[]{2,4,6,8}; // 初始化数组第二个元素:4个整数组成的数组
jiaoArray[2] = new int[]{1,3,5}; // 初始化数组第三个元素:3个整数组成的数组
3. 声明数组时进行初始化。如:
int[][] jiaoArray = new int[][]
{
new int[]{1,2,3,4,5},
new int[]{2,4,6,8},
new int[]{1,3,5}
};
4. 可以使用下面的格式:
int[][] jiaoArray =
{
new int[]{1,2,3,4,5},
new int[]{2,4,6,8},
new int[]{1,3,5}
};
5. 交错数组的元素是引用类型,初始化为null。我们可以访问个别数组元素:
jiaoArray[0][1] = 5; // 将5赋给第1个数组[0]的第2个元素[1]
jiaoArray[3][2] = 7; // 将7赋给第4个数组[3]的第3个元素[2]
6. 可以混合使用交错数组和多维数组。下面声明和初始化一个一维交错数组,该数组包含大小不同的二维数组元素:
int[][,] jiaoArray = new int[3][,]
{
new int[,]{{1,2},{3,4}},
new int[,]{{11,22},{33,44},{55,66}},
new int[,]{{111,222},{333,444},{555,666}}
};
我们可以访问个别元素,下面的例子显示第一个数组的元素[1,0]的值3:
Console.WriteLine("{0}",jiaoArray[0][1,0]);Length方法返回包含在交错数组中的数组的个数。
Console.WriteLine(jiaoArray.Length); // 返回值3
四、示例
示例一
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
// C#交错数组的初始化-www.baike369.com
// 交错数组:声明一个2个元素的一维数组,数组中的元素都是一维整数数组
int[][] array = new int[2][];
array[0] = new int[4] { 1, 2, 3, 4 }; // 初始化数组的元素
array[1] = new int[5] { 0, 2, 4, 6, 8 }; // 初始化数组的元素
for (int i = 0; i < array.Length; i++)
{
Console.Write("元素({0}):", i);// 显示交错数组的元素
//显示交错数组中的每一个元素的值,这个值是一个一维整数数组
for (int j = 0; j < array[i].Length; j++)
{
Console.Write("{0}{1}", array[i][j],
j==(array[i].Length-1)?"":" ");
}
Console.WriteLine(""); // 将每一个交错数组的元素换行
}
Console.ReadLine();
}
}
}
运行结果:
元素(0):1 2 3 4
元素(1):0 2 4 6 8其中
j==(array[i].Length-1)?"":" "将交错数组中的元素的值,即一维整数数组的元素之间添加空格。请阅读C#条件运算符(?:)。
示例二
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
// 二维数组
int[,] array = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
int array1 = array[3, 1];
// 三维数组
int[, ,] array3D = new int[,,]{
{{1,2,3,4},{5,6,7,8},{9,10,11,12}},
{{13,14,15,16},{17,18,19,20},{21,22,23,24}}
};
int array2 = array3D[1, 2, 3];
Console.WriteLine("array[3,1](二维数组):{0}", array1);
Console.WriteLine("array3D[1,2,3](三维数组):{0}", array2);
Console.ReadLine();
}
}
}
运行结果:
array[3,1](二维数组):8
array3D[1,2,3](三维数组):24