LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 数组全解析:从基础到高阶摘要

admin
2025年3月22日 23:12 本文热度 183

概述

数组是一种数据结构,存储连续内存位置的相同类型的元素的集合,通过使用索引进行访问元素。数组提供了一种有效存储和访问固定数量元素的方法。本文一起来了解使用数组,从基础到高级的摘要。

数组

1、数组要点

  • 大小固定数组的大小是在创建数组时定义的,并且在运行时不能更改。

  • 同类元素:数组只能存储相同数据类型的元素【所有为整数、所有为字符串】。

  • 索引从零开始: 数组中第一个元素的索引为 0,每个后续元素都使用索引号进行访问。

  • 内存效率: 数组存储在连续的内存位置,能够有效地访问元素。


2、数组优点

  • 内存效率:数组分布在连续的内存块中,在内存使用方面非常高效。

  • 快速访问:通过索引访问数组元素非常快,非常适合需要频繁访问单个元素的任务。

  • 简单易用: 数组易于理解和使用。


3、数组缺点

  • 大小固定:数组创建后,无法更改其大小。当需要动态大小的集合时,这将受到限制。

  • 没有用于动态调整大小的内置功能:数组没有添加或删除元素的内置方法(如,用于动态更改数据)。


4、数组使用

  • 声明数组

在 C# 中可以使用多种方式声明数组,以下是一些示例。

// 声明一个整数数组int[] numbers = new int[5];// 声明和初始化数组string[] books = { "语文""数学""英语" };// 使用显式大小和初始化进行声明double[] prices = new double[] { 10.520.315.7 };// 声明数组后进行初始化int[] scores;scores = new int[] { 889274100 };

  • 访问元素

数组元素使用索引访问,索引从 0 开始。

// 输出 语文Console.WriteLine(books[0]);// 输出 20.3Console.WriteLine(prices[1]);

  • 修改元素 

可以重新为数组中的元素分配新值。

// 将第一个元素设置为10numbers[0] = 10; // 将第三个元素更改为18.9prices[2] = 18.9; 

  • 元素遍历

通过使用 for 循环或 foreach 循环来遍历数组元素。

// 使用for循环for (int i = 0; i < numbers.Length; i++){    Console.WriteLine(numbers[i]);}// 使用foreach循环foreach (string book in books){    Console.WriteLine(book);}

  • 多维数组

C# 支持多维数组,如二维数组。

// 声明二维数组int[,] matrix = new int[33];// 声明并初始化二维数组int[,] matrix2 = { { 112032 }, { 415260 }, { 708195 } };// 访问二维数组元素 【输出 20Console.WriteLine(matrix2[01]); 

  • 交错数组

C# 支持交错数组【其含意为数组的数组(可以具有不同长度的数组)】。

// 声明交错数组int[][] jaggedArray = new int[3][];// 初始化交错数组jaggedArray[0] = new int[] { 1121 };jaggedArray[1] = new int[] { 304050 };jaggedArray[2] = new int[] { 16171819 };// 访问交错数组元素 【输出 50Console.WriteLine(jaggedArray[1][2]);

  • 数组方法

数组具有一些内置方法,通过使用它们可对数组进行排序、反转、复制、查找等操作。

Array.Sort:对数组进行排序。

//按升序对数组进行排序Array.Sort(numbers);

Array.Reverse:反转数组的元素。

// 反转元素的顺序Array.Reverse(numbers); 

Array.Copy: 将元素从一个数组复制到另一个数组。

int[] copiedArray = new int[3];Array.Copy(numbers, copiedArray, 3);

Array.Find: 根据条件查找元素。

// 查找第一个大于10的元素int found = Array.Find(numbers, x => x > 10); Console.WriteLine(found);

  • 数组长度

数组长度表示了数组中的元素个数,可以使用Length属性和GetLength方法获取。

// 输出数组的长度Console.WriteLine(numbers.Length);// 输出二维数组中的行数Console.WriteLine(matrix2.GetLength(0)); // 输出二维数组中的列数Console.WriteLine(matrix2.GetLength(1)); 

  • 使用特定值的数组初始化。

可以使用特定值初始化数组或使用 Enumerable。重复上述步骤以创建填充相同值的数组。

// 使用特定值初始化数组int[] filledArray = new int[5] {0,0,0,0,0};// 使用Enumerable.Repeat 操作以用相同的值填充数组var repeatedArray = Enumerable.Repeat(185).ToArray(); // 数组大小为5,所有元素均为18

  • 将 LINQ 与数组一起使用。

LINQ 提供了强大的方法来作和查询数组。

using System.Linq;// 创建数组int[] numbers = { 1, 3, 8, 6, 14 };// 查找数组中的所有偶数var evenNumbers = numbers.Where(n => n % 2 == 0).ToArray();// 找到第一个大于4的数字var firstGreaterThan = numbers.FirstOrDefault(n => n > 4);// 求数组中所有元素的总和var sum = numbers.Sum();// 求元素的平均值var average = numbers.Average();Console.WriteLine("偶数: " + string.Join(", ", evenNumbers));Console.WriteLine("第一个大于4的数字: " + firstGreaterThan);Console.WriteLine("总和: " + sum);Console.WriteLine("平均值: " + average);

  • Object 的数组。

在 C# 中也可以创建对象数组。

// 定义一个类public class Person{    public string Name { get; set; }    public int Age { get; set; }    public Person(string name, int age)    {        Name = name;        Age = age;    }}// 创建对象数组Person[] people = {    new Person("小明"14),    new Person("小虎"16),    new Person("小天"13)};// 访问元素Console.WriteLine(people[0].Name);Console.WriteLine(people[1].Age);

  • 使用方法处理数组。

可以将数组传递给方法并对其进行作。数组是通过引用传递的,因此在方法中所做的更改将影响原始数组。

using System;internal class Program{    static void Main(string[] args)    {        string[] books = { "语文""数学""英语" };        Console.WriteLine("调用方法前:");        foreach (string book in books)        {            Console.WriteLine(book);        }        ModifyArray(books);        Console.WriteLine("调用方法后:");        foreach (string book in books)        {            Console.WriteLine(book);        }        Console.Read();    }    /// <summary>    ///     /// </summary>    /// <param name="arr"></param>    public static void ModifyArray(string[] arr)    {        for (int i = 0; i < arr.Length; i++)        {            arr[i] = string.Format("{0}{1}", arr[i], i);        }    }}

  • 复制数组。

数组复制可以通过以下几种方式进行:

Array.Copy: 将元素从一个数组复制到另一个数组。

Array.Clone: 创建数组的浅表副本。

Array.ConstrainedCopy: 复制具有附加安全检查的图元。

// 使用Array.Copy方法复制string[] books = { "语文""数学""英语" };string[] copyToBooks = new string[3];Array.Copy(books, copyToBooks, 3);// 使用 Array.Clonestring[] clonedArray = (int[])books.Clone();// 修改原始数组books[0] = "化学";Console.WriteLine("原数组: " + string.Join(", ", books));Console.WriteLine("克隆数组: " + string.Join(", ", clonedArray));

  • 调整数组大小

C# 中不直接允许调整数组的大小,但可以使用 Array.Resize 创建具有不同大小的新数组。

// 原数组string[] books = { "语文""数学""英语" };// 调整数组大小Array.Resize(ref books, 5); // 调整为5个元素// 初始化新调整大小的数组books[3] = "物理";books[4] = "物理";// 输出 "语文, 数学, 英语, 物理, 化学"Console.WriteLine(string.Join(", ", books)); 

  • 数组与列表

数组大小固定,而 List<T> 更灵活,因为它可以动态增长或收缩。

string[] books = { "语文""数学""英语""物理""化学" };// 数组索引起始位1,取长度3ArraySegment<string> segment = new ArraySegment<string>(books, 1, 3);foreach (var item in segment){    // 输出 数学 英语 物理    Console.Write(item);    Console.Write(" ");}

小结

以上是以摘要的方式,介绍了数组从基础到高级的相关内容的全貌,并列举了一些示例。


阅读原文:原文链接


该文章在 2025/3/24 17:11:03 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved