c#数组赋初值_C#数组初始化
C#的数组初始化是在声明数组时将初始值放在⼤括号({})之内。如果没有指定初始值,则数组成员将⾃动初始化为该数组类型的默认初始值。请阅读数组的属性。如果将数组声明为某类型的字段,则当实例化该类型时它将被设置为默认值null。
⼀、⼀维数组的初始化
1. 在声明数组时将其初始化。如:
int[] array = new int[6]{1,2,3,4,5,6};
string[] stringArray = new string[3]{"string1", "string2", "string3"};2. 可以省略数组的⼤⼩。如:
int[] array = new int[]{1,2,3,4,5,6};
string[] stringArray = new string[]{"string1", "string2", "string3"};3. 如果提供了初始值设定项,还可以省略new运算符。如:
int[] array = {1,2,3,4,5,6};
string[] stringArray = {"string1", "string2", "string3"};4. 声明⼀个数组变量但不将其初始化,等到将数组分配给此变量时必须使⽤new 运算符。如:
int[] array;
array = new int[]{1,2,3,4,5};
string[] stringArray;
stringArray = 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列的⼆维数组。3⾏分别是{1,2}、{3,4}和{5,6}这三⾏,每⼀⾏都⽤⼤括号{}括起来,第1⾏{1,2}⽤0表⽰,第2⾏{3,4}⽤1表⽰,第3⾏{5,6}⽤2表⽰。
每⼀⾏⼤括号内表⽰的是列,对于array2D来说,每⼀⾏都是2列,⽤0、1表⽰。那么这个数组就是3⾏2列。
那么array2D的第3⾏2列的元素就是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,22,23,24}}。
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,5,6},{7,8,9}}};相当于int[1,3,3]。
三维数组有三个维度,好像⼀个⽴⽅体,需要⽤strArr[x,y,z]才能定位到矩阵中的元素,因此,如果需要遍历,必须使⽤三个嵌套的循环。⼀个简单的覆盖三维矩阵的例⼦是:
for(int i=0; i
{
for(int j=0; j
{
for(int k=0; k
{
Console.WriteLine(strArr[i, j, k]);
}
}
}
2. 初始化数组时不需要指定级别。如:
int[,] array2D = {{1,2},{3,4},{5,6}};3. 声明⼀个数组变量但不将其初始化,等到将数组分配给此变量时必须使⽤new运算符。如:
int[,] array2D;
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
// 交错数组:声明⼀个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
{
{
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论