数组是 C# 中最基础的数据结构,用于存储固定大小的同类型元素集合。本文档涵盖了一维数组、二维数组的初始化方式,以及数组的实际应用(如计算平均值)。
一维数组是最简单的数组形式,类似于一行数据。
使用 ``new`` 关键字创建指定长度的数组。
// 语法:数据类型[] 变量名 = new 数据类型[长度]; int[] value_data = new int[300];
C# 是强类型语言,但通过 ``object`` 类型(所有类型的基类),可以创建一个看似能存储“任意类型”的数组。
// 定义包含字符串、数字等混合数据的数组 object[] ShuJu1 = { "123", "SN125478", "86.5", "1254", "4587" };
静态数组属于类本身,而不是类的实例。它在程序运行期间一直存在,且所有实例共享这一份数据。
public static int[] Game_map = new int[100]; // 静态的
二维数组可以看作是一个表格(行和列)。在 C# 中,使用 ``[,]`` 来定义矩形二维数组。
这是最直观的方法,先声明数组大小,然后逐个赋值。
// 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; // 第二行第二列
C# 提供了多种简写方式在声明时直接填充数据。以下三种方式效果相同:
方式 A:完整语法 指定了维度长度,并填充数据。
int[,] myarr = new int[2, 2] { { 12, 0 }, { 45, 10 } };
方式 B:省略长度 编译器会根据大括号内的数据自动推断维度大小。
int[,] myarr = new int[,] { { 12, 0 }, { 45, 10 } };
方式 C:极简语法 直接省略 ``new int[,]``,这是最常用的简写方式。
int[,] myarr = { { 12, 0 }, { 45, 10 } };
本节展示如何将数组作为参数传递给方法,并使用 ``foreach`` 循环进行计算。
以下代码演示了定义数组、调用方法以及计算逻辑。
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; // 返回结果 } } }
* 方法参数:``static double max(int[] kar)`` 表示该方法接收一个整型数组作为输入。 * foreach 循环:
* 类型转换:计算平均值时,为了保留小数部分,累加变量 ``sum`` (d) 和结果变量 ``avg`` (f) 被定义为 ``double`` 类型。如果使用 ``int`` 进行除法,小数部分会被截断。
| 数组类型 | 声明示例 | 特点 |
|---|---|---|
| 一维数组 | ``int[] a = new int[5];`` | 最常用,线性存储 |
| 二维数组 | ``int[,] a = new int[2,2];`` | 矩形结构,行和列长度固定 |
| Object数组 | ``object[] a = {1, “text”};`` | 可存储不同类型,需注意装箱拆箱性能 |
| 静态数组 | ``static int[] a;`` | 全局共享,生命周期贯穿程序运行 |