数据存储。

假设您开发了一款名为“User Hostile”的电脑游戏,玩家在其中与复杂且不友好的玩家竞争计算机界面。现在您需要编写一个程序来跟踪该游戏在五年内的月销售额。或者假设您需要清点 Hacker Hero Trading Cards。
很快您就会得出结论,您需要的不仅仅是简单的基本数据类型来存储和处理信息。

 

数组。简介。

为了更容易处理大量数据,一组单元格被赋予了一个共同的姓名。这样的一组单元格称为数组
Array –它是一组相同类型的存储单元,并排放置并具有共同的名称。组中的每个单元格都有一个唯一的编号。

使用数组时需要学习三件事:
X为数组分配所需大小的内存;
X将数据写入所需的单元格;
X从单元格中读取数据。

创建一个数组。

创建数组时,会在内存中分配空间(一定数量的单元格)。 <前> 1) 可以通过简单地枚举元素来创建数组: <前> int[] nums = < code>new int[] { 1, 2, 3, 5 }; int 表示数组中的所有对象都是整数代替 int 可以有任何其他数据类型。例如, string[] names = ["Vasya", "Peter", "Fedya"]; 2) 我们不能立即指定数组的值,而是简单地创建一个我们需要的长度的数组。 int[] nums = new int[4]; 3) 数组总是“知道”你的尺码。可以这样找到数组a的大小:
a.长度;
通常数组的大小存储在一个单独的变量中,以便可以轻松更改程序以使用不同的数组大小。示例:
<前> int N = 10; // 将数组的大小存储在变量 N 中 int[] nums = new int[4]; //创建一个大小为N的数组 Console.Write(nums.Length); // 显示数组的大小 数组的大小可以通过键盘设置。

引用数组元素。

数组的大部分用途来自于它的元素可以单独访问的事实。
这样做的方法是使用索引对元素进行编号。
Index 是指向特定数组元素的值。

记住: C# 数组编号从零开始。< br />
访问数组 A 的示例:
<前> int x = (A[3] + 5) * A[1] / /读取值A[3]和A[1] A[0] = x + 6 // 将新值写入 A[0] 让我们分析一下处理数组元素的程序。 <前> int i = 1; int[] A = 新的 int[5]; //创建一个包含5个元素的数组 A[0] = 23; // 数组的 5 个元素中的每一个(索引从 0 到 4) A[1] = 12; // 写一个特定的值 A[2] = 7; A[3] = 43; A[4] = 51; A[2] = A[i] + 2*A[i-1] + A[2*i]; // 将索引为 2 的元素的值更改为表达式的结果 // 因为 i=1,所以将变量 i 的值代入我们得到的表达式 // 下一个表达式 A[2] = A[1] + 2*A[0] + A[2]; Console.Write((A[2] + A[4])); 作为执行该程序的结果,数组的元素与索引 2 和索引 4 将出现在屏幕上,等于 116。 从示例中可以看出,我们可以访问数组的任何元素。并使用各种公式计算所需的元素数(例如,在程序 A[i-1]A[2*i] 中,在这些情况下,元素索引将被计算并取决于 i 的值)。

让我们分析一个示例程序。
<前> int N = 5; int[] A = 新的 int[N]; 整数 x = 1; A[x + 4] = A[x] + A[2 * (x + 1)];  // 将 x 代入表达式和计算之后                            // 获取下一行 A[5] = A[1] + A[4]                           // A[5] 不存在这样的元素                           // 错误 - 数组越界 数组声明有5个元素,这意味着元素将从0到4. 我们看到,第 6 行的程序引用了一个不存在的元素:A[5]
原来是程序越界了。
数组溢出是指访问数组中不存在的索引处的元素。
在这种情况下,程序通常会因运行时错误而崩溃。

 

使用数组时,您通常必须同时处理数组的所有元素。
迭代元素:我们查看数组的所有元素,并在必要时对每个元素执行一些操作。
为此,最常使用带有变量的循环,它从 0 变为 N-1,其中 N  是数字数组元素。
N 下,我们将考虑数组的当前大小,即,
N = A.Length;
<前> ... for (int i = 0; i < N; i++) { // 这里我们使用 A[i] } 在指定的循环中, i 变量将取值0, 1, 2, ..., N-1。 因此,在循环的每一步,我们都访问数组中编号为 i 的特定元素。
也就是说,描述 A[i] 数组中的一个元素需要做什么,并将这些动作放在这样的循环中就足够了。

让我们编写一个程序,用第一个自然数填充数组,也就是说,在程序结束时,数组的元素应该变得相等
<前> A[0] = 1 A[1] = 2 A[2] = 3 ... A[N - 1] = N 很容易看出这个规律:数组元素的值必须比元素的索引。
循环看起来像这样
<前> for (int i = 0; i < N; i++) { A[ i] = i + 1; }

处理数组元素的其他方法
除了<代码循环> ,也可以使用foreach - 它遍历数组的所有元素,而不使用索引。有时它会很方便,例如,在屏幕上显示一个数组。   foreach(A 中的整数 i) { Console.Write(i + "");
这就是您如何从键盘读取一个数组,数组的元素写在一行上并用空格分隔。 使用 System.Linq; // 您需要编写此指令才能使用与处理数组相关的函数 ... 字符串文本 = Console.ReadLine(); int[] array = text.Split(' ').Select(int.Parse).ToArray(); // Split() 将字符串拆分为单独的对象(在本例中为空间划分) // Select(int.Parse) 将每个对象(字符串)转换为一个 int // ToArray() 将所有接收到的对象写入数组