可以将同一类型的多个变量存储在一个数组数据结构中。 通过指定数组的元素类型来声明数组。 如果希望数组存储任意类型的元素,可将其类型指定为 。 在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从 继承的。
数组具有以下属性:
- 数组可以是一维、多维或交错的。
- 声明数组变量时设置维度数。 创建数组实例时,将建立每个维度的长度。 这些值在实例的生存期内无法更改。
- 交错数组是数组数组,每个成员数组的默认值为。
- 数组从零开始编制索引:包含 元素的数组从 索引到 。
- 数组元素可以是任何类型,其中包括数组类型。
- 数组类型是从抽象的基类型 派生的引用类型。 所有数组都会实现和。 可以使用 foreach 语句循环访问数组。 单维数组还实现了 和 。
创建数组时,可以将数组的元素初始化为已知值。 从 C# 12 开始,可以使用集合表达式初始化所有集合类型。 未初始化的元素设置为默认值。 默认值为 0 位模式。 所有引用类型(包括不可为 null的类型)都具有值。 所有值类型都有 0 位模式。 这意味着属性为且属性未定义。 在 .NET 实现中,属性引发异常。
下面的示例创建一维数组、多维数组和交错数组:
一维数组是一系列相似元素。 可以通过其索引访问元素。 索引是序列中的顺序位置。 数组中的第一个元素位于索引。 使用 new 运算符创建一维数组,该运算符指定数组元素类型和元素数目。 以下示例声明并初始化一维数组:
第一个声明声明五个整数的未初始化数组,从到。 数组元素将初始化为元素类型的默认值, 代表整数。 第二个声明声明字符串数组并初始化该数组的所有七个值。 一系列 语句打印 数组的所有元素。 对于一维数组,语句以递增索引顺序处理元素(从索引 0 开始并以索引结束)。
可将初始化的一维数组传递给方法。 在下面的示例中,先初始化一个字符串数组,然后将其作为参数传递给字符串的 方法。 该方法将显示数组的元素。 接下来, 方法会反转数组元素,然后由 方法修改该数组的前三个元素。 每个方法返回后, 方法会显示按值传递数组不会阻止对数组元素的更改。
数组可具有多个维度。 例如,以下声明创建四个数组:两个具有两个维度,两个具有三个维度。 前两个声明声明每个维度的长度,但不初始化数组的值。 第二个声明使用初始值设定项设置多维数组中每个元素的值。
对于多维数组,遍历元素的方式为:首先递增最右边维度的索引,然后是它左边的一个维度,以此类推,向最左的索引遍历元素。 以下示例枚举 2D 和 3D 数组:
在 2D 数组中,可以将左索引视为行,将右索引视为列。
但对于多维数组,使用嵌套的for循环可以更好地控制处理数组元素的顺序:
通过与传递一维数组相同的方式,向方法传递初始化的多维数组。 下列代码演示了 Print 方法的部分声明(该方法接受将二维数组作为其参数)。 可在同一步骤中初始化并传递新数组,如下例所示。 在下列示例中,初始化一个整数的二维数组,并将其传递至 方法。 该方法将显示数组的元素。
交错数组是一个数组,其元素是数组,大小可能不同。 交错数组有时称为“数组的数组”。其元素是引用类型,初始化为。 以下示例说明如何声明、初始化和访问交错数组。 第一个示例在一个语句中声明。 每个包含的数组在后续语句中创建。 第二个示例在一个语句中声明和初始化。 可以混合使用交错数组和多维数组。 最终示例是一维交错数组声明和初始化,包含大小不同的三个二维数组元素。
必须先初始化交错数组的元素,然后才能使用它们。 每个元素本身都是数组。 还可以使用初始值设定项填充数组元素的值。 使用初始值设定项时,无需数组大小。
本例生成一个数组,该数组的元素为数组自身。 每一个数组元素都有不同的大小。
可以创建隐式类型化的数组,其中数组实例的类型通过数组初始值设定项中指定的元素来推断。 针对隐式类型化变量的任何规则也适用于隐式类型化数组。 有关详细信息,请参阅隐式类型局部变量。
下列示例演示了如何创建隐式类型化数组:
在上个示例中,请注意对于隐式类型化数组,初始化语句的左侧没有使用方括号。 此外,和一维数组一样,通过使用来初始化交错数组。
创建包含数组的匿名类型时,必须在类型的对象初始值设定项中隐式类型化数组。 在下列示例中,是匿名类型的隐式类型化数组,每个类型都包含名为的数组。 不在对象初始值设定项中使用关键字。
到此这篇合并数组arr1和数组arr2是数据结构的内容吗(合并数组arr1和数组arr2是数据结构的内容吗)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/43603.html