C# 中多维数组和锯齿数组的区别

17 Mar 2025 | 6 分钟阅读

本文将讨论多维数组交错数组之间的区别。交错数组和多维数组是 C# 的一个方面,每个了解 C# 的程序员都应该熟悉它们,因为数组是语言可以拥有的主要数据结构之一。它们允许我们以结构良好且快速的方式存储和操作数据,选择合适的数组是编写代码更快、更有效率最重要的方面之一。

什么是多维数组?

多维数组,在 C# 中俗称“矩形数组”,可以被看作是2D3D 的。矩阵由数据行和列组成,包括数字和基于字符的数据。

为了拥有多维数组,应在方括号中使用逗号。

语法

它具有以下语法:

示例

让我们以一个例子来说明 C# 中的2D 多维数组

输出

0 140 
0 0 

说明

这个 C# 程序演示了2x2 二维数组的用法,该数组由整数类型组成。它初始化一个数组,并将值 140 放入位置 [0, 1] 的元素中。接下来,使用嵌套的 for 循环遍历数组并打印其元素。元素的值使用 Console.Write() 方法显示。调用最后一个 Console.WriteLine() 语句将在打印完每一行后移至新行。程序的输出是第一行显示 “0 140”,第二行显示 “0 0”,这表示数组元素的值。

多维数组的关键特性

C# 中的多维数组有几个关键特性。一些主要的关键特性如下:

  1. 矩形结构:多维数组非常类似于数字表达式。它们始终具有矩形结构,其中每行都有相同数量的列。
  2. 固定大小:创建这些数组时,低维数组的大小无法更改。我们需要在声明时为每个维度声明一个起始大小。
  3. 连续内存分配:多维数组的内存区域的顺序分配加快了它们的访问速度。
  4. 对矩阵运算有效:多维数组对于处理和操作行和列具有统一结构的矩阵和表尤其有效。

什么是交错数组?

交错数组是一种成员数组可以具有不同大小的数组。因此,每个数组分量的大小可以不同。交错数组的元素是默认设置为 null 的引用。交错数组还可以与多维数组结合使用。声明时行数是固定的,但列数可以更改。在交错数组声明中,用户只需要指定行数。如果用户还想包含所有列,那它将更像一个矩形数组。

语法

它具有以下语法:

示例

让我们以一个例子来说明 C# 中的交错数组

输出

Row(0): 10 20 30 40 
Row(1): 21 94 87 
Row(2): 67 29 

说明

此程序表示 C# 中交错数组的实现。交错数组是数组的数组;主数组的每个元素都是一个长度不同的数组。在此程序中,声明了一个具有 3 行的二维交错数组,并且每一行都分配了一个不同于其他行的整数集合。之后,代码使用嵌套循环遍历交错数组,并逐个打印其元素和行。因此,程序显示数组元素,每一行之后是其所有元素。

交错数组的关键特性

C# 中的交错数组有几个关键特性。一些主要的关键特性如下:

  1. 不规则结构:交错数组具有不规则的形状,因为每行的因子数量不同。
  2. 动态大小:与行数固定的多维数组不同,交错数组允许动态调整行的大小。每一行可以有不同的长度,行数可以根据需要增加或减少。
  3. 内存分配:交错数组不是连续分配的,因此不具有连续的内存位置。每一行都是一个单独的数组对象,该对象被迭代分配以保持每一行的独立性。

多维数组和交错数组之间的主要区别

Difference between Multi-Dimensional array and a Jagged Array in C#

以下是 C# 中多维数组和交错数组之间的区别:

方面多维数组交错数组
定义多维数组是由元素组成的矩形集合,其中每个元素位于一个具有多个维度的索引处。交错数组也可以定义为数组的数组,其中每个元素包含一个大小不同的数组。
内存分配它分配一个唯一的连续内存块。每个子数组可以包含不同数量的元素。
内存效率它比线性数据结构更节省空间。它为所有行单独分配内存,以便每一行可以包含不同数量的元素。
性能通常,它在访问元素方面更有效,因为它直接存储在内存中而没有碎片。当行长度差异很大时,它可能节省内存。否则,由于非连续内存访问,元素的访问可能会变慢。
灵活性灵活性较低,因为所有行都具有相同的长度。更灵活,因为每一行都可以有自己不同的长度。
存储要求使用的内存量取决于不同维度中所需的最大元素数量。额外的内存仅存储在实际元素上。
用不同维度进行初始化不创建另一个数组就无法实现。情况类似,因为每个后续数组的长度可能都不同。

结论

多维数组具有矩形结构,每个元素都位于一个单一位置,并且所有行都具有相同的长度。它们分配一个单一的连续内存块来存储所有元素,这使得访问元素更加高效。从交错数组的角度来看,它们具有不一致的结构。每一行都可以由不同数量的元素组成,这有助于动态调整大小和灵活性。每一行的内存是单独分配的,这可能导致非连续的内存位置。了解我们应该为我们的程序使用哪种类型的数组很重要,熟悉程序的需要。使用多维数组来处理具有固定矩形结构、所有行长度相同且访问速度快的标准结构。如果我们想要灵活性和可变的行长度,则使用交错数组,它们适用于行长度不同的情况。