c#数组赋初值_C#数组初始化

c#数组赋初值_C#数组初始化C#的数组初始化是在声明数组时将初始值放在大括号({})之内。如果没有指定初始值,则数组成员将自动初始化为该数组类型的默认初始值。请阅读数组的属性。如果将数组声明为某类型的字段,则当实例化该类型时它将被设置为默认值null。一、一维数组的初始化1.在声明数组时将其初始化。如:int[]array=newint[6]{1,2,3,4,5,6};string[]stringArray=…

大家好,又见面了,我是你们的朋友全栈君。

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[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(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.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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161076.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 关于网络制式(例如:TD-SCDMA /GSM)

    关于网络制式(例如:TD-SCDMA /GSM)在中国,TD-SCDMA指的是中国移动的3G,WCDMA指的是中国联通的3G,CDMA2000指的是中国电信的3G,GSM是2G网络(中国联通和中国移动都有),简言之,CDMA2000是CDMA演进的3G!CDMA(CodeDivisionMultipleAccess)又称码分多址,是在无线通讯上使用的技术。在国内,是中国电信的手机网络在用的方式。三大运营商网络制式…

  • pycharm减少缩进快捷键_怎么取消整段缩进

    pycharm减少缩进快捷键_怎么取消整段缩进Pycharm整体缩进:选择要缩进的段落,按tab整体取消缩进tab+shift

  • spring cloud总览和架构图[通俗易懂]

    spring cloud总览和架构图[通俗易懂]本节主要是根据微服务的技术架构图,介绍下springcloud微服务体系中的核心组件。下面是spring官网的springcloud微服务架构图:核心组件说明:分享2张微服务的架构图:之后的文章中,会针对各组件和底层原理调优,以及工作中遇到的一些坑,进行一些记录和说明。1、各组件的原理和使用2、服务划分和数据库拆分思路3、微服务的部署方案4、微服务中的一些优化…

  • DELL服务器数据恢复成功案例[通俗易懂]

    DELL服务器数据恢复成功案例[通俗易懂]DELLEqualLogicPS6100采用虚拟ISCSISAN阵列,为远程或分支办公室、部门和中小企业存储部署带来企业级功能、智能化、自动化和可靠性。以简化的管理、快速的部署及合理的价格满足了分支办公室和中小企业的存储需求,同时提供全套企业级数据保护和管理功能、可靠的性能、可扩展性和容错功能,是中型企业级存储的起点产品,但某些物理故障或其他操作都可能会对卷或存储造成破坏,因此对系列存储的数…

  • 时间协议ntp服务器,时间服务器NTP搭建及NTP协议简介

    NTP协议简介目前在计算机上同步时间采用的NTP协议,我们可以在局域网中搭建NTP服务器来同步时间。NTP(NetworkTimeProtocol)是用来是计算机时间同步化的一种协议,他可以使计算机对其服务器或时钟源(如石英钟、GPS)做同步化,可以提供高精准度的时间校正。NTP可以通过原子钟、天文台、卫星等渠道获得精准时间,然后再按照NTP服务器等级进行传播。NTP的网络结构是分层管理的类树…

  • gentoo install_centos7 no controller found

    gentoo install_centos7 no controller found这期笔记将是gentoo安装的最后一期了,虽然已经配置内核了,但是也要完成剩下的安装步骤,这离安装完成已经不远了,继续加油!!!如果中断了安装,请看第二期的笔记进行恢复安装,但请重新编译一次内核,否

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号