C#-数组

数组 (array) 是一种包含若干变量的数据结构,这些变量都可以通过计算索引进行访问。数组中包含的变量(又称数组的元素)具有相同的类型,该类型称为数组的元素类型。

数组类型为引用类型,因此数组变量的声明只是为数组实例的引用留出空间。实际的数组实例在运行时使用 new 运算符动态创建。new 运算符指定新数组实例的长度 (length),它在该实例的生存期内是固定不变的。数组元素的索引范围从 0 到 Length - 1。new 运算符自动将数组的元素初始化为它们的默认值,例如将所有数值类型初始化为零,将所有引用类型初始化为 null。

下面的示例创建一个 int 元素的数组,初始化该数组,并打印该数组的内容。

csharp 复制代码
using System;

class Test
{
    static void Main()
    {
        int[] a = new int[10];
        for (int i = 0; i < a.Length; i++)
        {
            a[i] = i * i;
        }

        for (int i = 0; i < a.Length; i++)
        {
            Console.WriteLine("a[{0}] = {1}", i, a[i]);
        }
    }
}

此示例创建并操作一个一维数组 (single-dimensional array)。C# 还支持多维数组 (multi-dimensional array)。数组类型的维数也称为数组类型的秩 (rank),它是数组类型的方括号之间的逗号个数加 1。下面的示例分别分配一个一维数组、一个二维数组和一个三维数组。

csharp 复制代码
int[] a1 = new int[10];
int[,] a2 = new int[10, 5];
int[,,] a3 = new int[10, 5, 2];

a1 数组包含 10 个元素,a2 数组包含 50 (10 × 5) 个元素,a3 数组包含 100 (10 × 5 × 2) 个元素。

数组的元素类型可以是任意类型,包括数组类型。对于数组元素的类型为数组的情况,我们有时称之为交错数组 (jagged array),原因是元素数组的长度不必全都相同。下面的示例分配一个由 int 数组组成的数组:

csharp 复制代码
int[][] a = new int[3][];
a[0] = new int[10];
a[1] = new int[5];
a[2] = new int[20];

第一行创建一个具有三个元素的数组,每个元素的类型为 int\[\] 并具有初始值 null。接下来的代码行使用对不同长度的数组实例的引用分别初始化这三个元素。

new 运算符允许使用数组初始值设定项 (array initializer) 指定数组元素的初始值,数组初始值设定项是在一个位于定界符 { 和 } 之间的表达式列表。下面的示例分配并初始化具有三个元素的 int\[\]。

csharp 复制代码
int[] a = new int[] {1, 2, 3};

注意数组的长度是从 { 和 } 之间的表达式个数推断出来的。对于局部变量和字段声明,可以进一步简写,从而不必再次声明数组类型。

csharp 复制代码
int[] a = {1, 2, 3};

前面的两个示例都等效于下面的示例:

csharp 复制代码
int[] t = new int[3];
t[0] = 1;
t[1] = 2;
t[2] = 3;
int[] a = t;
相关推荐
ITKEY_9 小时前
neovim基于nvim-jdtls 开发java报错
java·开发语言
無限進步D10 小时前
Java 代码块
java·开发语言
吃好睡好便好10 小时前
MATLAB仿真框图4
开发语言·matlab·仿真·分段函数
三克的油10 小时前
算法基础-1
数据结构·c++·算法
TheBestRucy10 小时前
基于Dify的旅游攻略&王者荣耀攻略智能助手项目
服务器·开发语言·人工智能·python·算法·旅游
一水10 小时前
Pi :内置四工具源码拆解——文件锁、变更快照与 bash 隔离
开发语言·chrome·ai·bash
一米阳光866110 小时前
软考(中级)软件设计师核心笔记(8)数据结构——树与二叉树
数据结构·笔记·职场发展·软考·软件设计师·中级职称
梅菲塔亚10 小时前
Keepalived高可用全解析
linux·运维·服务器·开发语言·网络·php
AI刀刀10 小时前
腾讯元宝粘贴到 word 格式混乱,AI 导出鸭一键规整排版
人工智能·c#·word·ai导出鸭
依然鸣10 小时前
PTA团体程序设计天梯赛L2真题讲解L2-005-008
开发语言·数据结构·c++·算法·深度优先·pat考试·图论