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[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<x; i++)
{
    for(int j=0; j<y; j++)
    {
        for(int k=0; k<z; 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

时间: 2024-08-03 09:20:03

C#数组初始化的相关文章

Java之路(四)数组初始化

本文主要讲数组的初始化方法.可变参数列表以及可变参数列表对函数重载的影响. 数组初始化 定义数组的方式: int[] arr1; 或  int arr1[]; 数组初始化 通过上边的定义,我们只是得到了一个数组的引用.这时已经为引用分配了存储空间,但是还没有给数组对象本身分配任何空间.想要给数组对象分配存储空间,必须使用初始化表达式. a.在数组创建的地方进行初始化,如: int[] arr1 = {1,2,3,4,5}; 这种方式等价于使用new来进行存储空间分配. b.给数组的引用赋值,如:

C++中数组初始化

#include<iostream>using std::cout;using std::endl;int arr1[5];int arr2[5] = {1,3,5};int main(){int arr3[5];int arr4[5] = {2,4,6};int *pi1 = new int[5];int *pi2 = new int[5]();for(int i = 0; i != 5; i++)   cout << arr1[i] << " "

编程题:实现一维数组初始化的几种形式。

#include<stdio.h> void main() { int n; int a[5]={0,1,2,3,4}; int b[5]={1,2}; float c[]={1,2,3,4,5}; for(n=0;n<5;n++) printf("%5d",a[n]); printf("\n"); for(n=0;n<5;n++) printf("%5d",b[n]); printf("\n"); f

一个数组初始化的问题

曾经看到过一个同事写的代码,将一个数组初始化,将它全部初始化为一个指定的值,他采用的是: 1 char a[10]; 2 for(i=0; i<10; i++) 3 { 4 a[i] = 2; 5 } 我的第一想法是何必写这么多代码呢?一个memset不就完事了?并且还自以为是的认为这样做不如memset效率.现在想起觉得自己是多么的傻逼,其实memset就是通过循环实现的.并且memset有其不适用的地方,比如如果数组不是char型呢?显然对于非char型的数组,memset为非0值时就不能适

python多维数组初始化后赋值的问题

当使用下述代码进行数组初始化时 >>>a = [[0]*3]*3 [[0,0,0], [0,0,0], [0,0,0]] >>>a[1][1] = 1 [[0,1,0], [0,1,0], [0,1,0]] >>>b = [[0,0,0],[0,0,0],[0,0,0]] [[0,0,0], [0,0,0], [0,0,0]] >>>b[1][1] = 1 [[0,0,0], [0,1,0], [0,0,0]] 这是因为初始化的问题,

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

Chapter5_初始化与清理_数组初始化与可变参数列表

一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥有这个数组的存储空间.要获取数组的存储空间,必须要写初始化表达式,最朴素的表达式类型如下 1 int[] a = {1,2,3}; 如果在编写程序时,不能确定数组的长度,可以使用如下方式,直接用new在数组里创建元素 1 int[] a = new int[3]; 当创建对象数组时,数组中的元素仅仅

用vector容器代替数组 ——使用数组初始化vector对象

在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int_arry[arry_size]={0,1,2,3,4,5}; int int_arry2[arry_size]; for(size_t ix=0;ix<arry_size;++i)        int_arry2[ix]=int_arry[i]; 而使用数组初始化vector对象,可以直接利用一

利用函数调用实现数组初始化、逆置和清零

4.创建一个数组, 实现函数init()初始化数组. 实现empty()清空数组. 实现reverse()函数完成数组元素的逆置. 要求:自己设计函数的参数,返回值. #include <stdio.h> //数组变化 void init(int arr[],int len) //数组初始化 { int i=0; int num=0; printf("初始化数组.\n"); for(i=0;i<len;i++) { scanf("%d",&

C语言的数组初始化

这是非常基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定以前了解过,但如今,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停反复.所以从今天開始,我会比較具体的纪录这些比較小的知识点,事实上还是有不少有意思的地方的. 写这篇文章的起因在于<<COM技术内幕>>第七章新东西太多,看的我目不暇接,所以在网上找了些样例看,当中就有一个样例中出现了这种语句: ...wchar_t wname[128]=...{0};char cname[256]=...