csharp:组

C# 数组 (Arrays) 知识点详解

数组是 C# 中最基础的数据结构,用于存储固定大小的同类型元素集合。本文档涵盖了一维数组、二维数组的初始化方式,以及数组的实际应用(如计算平均值)。

一维数组是最简单的数组形式,类似于一行数据。

使用 ``new`` 关键字创建指定长度的数组。

// 语法:数据类型[] 变量名 = new 数据类型[长度];
int[] value_data = new int[300]; 
  • 解释:这行代码在内存中分配了能容纳 300 个整数的空间。默认情况下,`int` 类型的数组元素会被初始化为 `0`。

C# 是强类型语言,但通过 ``object`` 类型(所有类型的基类),可以创建一个看似能存储“任意类型”的数组。

// 定义包含字符串、数字等混合数据的数组
object[] ShuJu1 = { "123", "SN125478", "86.5", "1254", "4587" };
  • 注意:虽然这样很灵活,但在使用数组中的元素时通常需要进行类型转换 (Casting)拆箱 (Unboxing),这可能会影响性能。

静态数组属于类本身,而不是类的实例。它在程序运行期间一直存在,且所有实例共享这一份数据。

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 循环

  • ``foreach (var item in kar)`` 是遍历数组的最佳方式之一,不需要关心数组的具体索引。
  • 它会自动从数组的第一个元素遍历到最后一个元素。

* 类型转换:计算平均值时,为了保留小数部分,累加变量 ``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;`` 全局共享,生命周期贯穿程序运行

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • csharp/组.txt
  • 最后更改: 2025/11/25 09:02
  • 张叶安