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;
相关推荐
FuLLovers27 分钟前
2024-09-13 冯诺依曼体系结构 OS管理 进程
linux·开发语言
everyStudy1 小时前
JS中判断字符串中是否包含指定字符
开发语言·前端·javascript
luthane1 小时前
python 实现average mean平均数算法
开发语言·python·算法
Hellc0071 小时前
什么是 WebApiEngine?
c#
dangoxiba2 小时前
【Unity学习心得】如何使用Unity制作“饥荒”风格的俯视角2.5D游戏
游戏·unity·c#·游戏引擎
凡人的AI工具箱2 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python
sleP4o2 小时前
Python操作MySQL
开发语言·python·mysql
是店小二呀2 小时前
【C++】C++ STL探索:Priority Queue与仿函数的深入解析
开发语言·c++·后端
洛寒瑜2 小时前
【读书笔记-《30天自制操作系统》-23】Day24
开发语言·汇编·笔记·操作系统·应用程序
ephemerals__2 小时前
【c++】动态内存管理
开发语言·c++