显示页面讨论反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== C# 数组 (Arrays) 知识点详解 ====== 数组是 C# 中最基础的数据结构,用于存储固定大小的同类型元素集合。本文档涵盖了一维数组、二维数组的初始化方式,以及数组的实际应用(如计算平均值)。 ===== 1. 一维数组 (One-Dimensional Arrays) ===== 一维数组是最简单的数组形式,类似于一行数据。 ==== 1.1 声明与实例化 ==== 使用 ``new`` 关键字创建指定长度的数组。 <code csharp> // 语法:数据类型[] 变量名 = new 数据类型[长度]; int[] value_data = new int[300]; </code> * **解释**:这行代码在内存中分配了能容纳 300 个整数的空间。默认情况下,`int` 类型的数组元素会被初始化为 `0`。 ==== 1.2 Object 任意类型数组 ==== C# 是强类型语言,但通过 ``object`` 类型(所有类型的基类),可以创建一个看似能存储"任意类型"的数组。 <code csharp> // 定义包含字符串、数字等混合数据的数组 object[] ShuJu1 = { "123", "SN125478", "86.5", "1254", "4587" }; </code> * **注意**:虽然这样很灵活,但在使用数组中的元素时通常需要进行**类型转换 (Casting)** 或**拆箱 (Unboxing)**,这可能会影响性能。 ==== 1.3 静态数组 (Static Arrays) ==== 静态数组属于类本身,而不是类的实例。它在程序运行期间一直存在,且所有实例共享这一份数据。 <code csharp> public static int[] Game_map = new int[100]; // 静态的 </code> * **应用场景**:常用于存储全局配置、游戏地图数据等不需要随对象销毁的数据。 ===== 2. 二维数组 (Two-Dimensional Arrays) ===== 二维数组可以看作是一个表格(行和列)。在 C# 中,使用 ``[,]`` 来定义矩形二维数组。 ==== 2.1 逐步初始化 (Element-by-Element) ==== 这是最直观的方法,先声明数组大小,然后逐个赋值。 <code csharp> // 1. 声明一个 2行 2列 的数组 int[,] myarr = new int[2, 2]; // 2. 通过索引赋值 (索引从0开始) myarr[0, 0] = 0; // 第一行第一列 myarr[0, 1] = 1; // 第一行第二列 myarr[1, 0] = 1; // 第二行第一列 myarr[1, 1] = 2; // 第二行第二列 </code> ==== 2.2 声明时直接初始化 (Inline Initialization) ==== C# 提供了多种简写方式在声明时直接填充数据。以下三种方式效果相同: **方式 A:完整语法** 指定了维度长度,并填充数据。 <code csharp> int[,] myarr = new int[2, 2] { { 12, 0 }, { 45, 10 } }; </code> **方式 B:省略长度** 编译器会根据大括号内的数据自动推断维度大小。 <code csharp> int[,] myarr = new int[,] { { 12, 0 }, { 45, 10 } }; </code> **方式 C:极简语法** 直接省略 ``new int[,]``,这是最常用的简写方式。 <code csharp> int[,] myarr = { { 12, 0 }, { 45, 10 } }; </code> ===== 3. 数组实战:计算平均值 ===== 本节展示如何将数组作为参数传递给方法,并使用 ``foreach`` 循环进行计算。 ==== 3.1 代码示例 ==== 以下代码演示了定义数组、调用方法以及计算逻辑。 <code csharp> using System; namespace ArrayCalculation { class Program { static void Main(string[] args) // 1. 主程序入口 { // 定义并初始化一个一维数组 int[] a = new int[3] { 1, 3, 5 }; // 调用静态方法计算平均值,并打印结果 // 注意:原代码中方法名为 max,但实际逻辑是求平均值,建议命名为 CalculateAverage double result = CalculateAverage(a); Console.WriteLine("平均值是: " + result); Console.ReadKey(); } // 静态方法:接收一个 int 数组,返回 double 类型的平均值 static double CalculateAverage(int[] kar) { double sum = 0; // 用于累加总和 (原变量 d) double count = 0; // 用于记录个数 (原变量 e) double avg; // 用于存储结果 (原变量 f) // 使用 foreach 遍历数组中的每一个元素 foreach (var item in kar) { sum = sum + item; // 累加 count = count + 1; // 计数 } // 计算平均值 if (count > 0) { avg = sum / count; } else { avg = 0; } return avg; // 返回结果 } } } </code> ==== 3.2 关键点解析 ==== * **方法参数**:``static double max(int[] kar)`` 表示该方法接收一个整型数组作为输入。 * **foreach 循环**: * ``foreach (var item in kar)`` 是遍历数组的最佳方式之一,不需要关心数组的具体索引。 * 它会自动从数组的第一个元素遍历到最后一个元素。 * **类型转换**:计算平均值时,为了保留小数部分,累加变量 ``sum`` (d) 和结果变量 ``avg`` (f) 被定义为 ``double`` 类型。如果使用 ``int`` 进行除法,小数部分会被截断。 ===== 4. 总结 ===== ^ 数组类型 ^ 声明示例 ^ 特点 ^ | **一维数组** | ``int[] a = new int[5];`` | 最常用,线性存储 | | **二维数组** | ``int[,] a = new int[2,2];`` | 矩形结构,行和列长度固定 | | **Object数组**| ``object[] a = {1, "text"};`` | 可存储不同类型,需注意装箱拆箱性能 | | **静态数组** | ``static int[] a;`` | 全局共享,生命周期贯穿程序运行 | 登录 Detach Close 该主题尚不存在 您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。 csharp/组.txt 最后更改: 2025/11/25 09:02由 张叶安 登录