Unity游戏制作中的C#基础(4)数组声明和使用

news/2025/2/22 14:29:47

一、数组的声明

        在 C# 中,声明数组有多种方式,每种方式都有其适用的场景,下面为你逐一详细介绍:

1. 直接初始化声明

        这种方式直观且便捷,在声明数组的同时就为其赋初值,让数组从诞生之初就拥有了具体的数据。格式为:数据类型[] 数组名 = {数组值};

示例代码如下:

int[] numbers = { 1, 2, 3, 4, 5 };

        此代码声明了一个名为 numbers 的整型数组,并初始化为包含 1 到 5 的五个整数。这种声明方式适用于你在编写代码时就已经明确知道数组要包含哪些元素的情况。比如,在游戏中你要定义一个固定的关卡顺序列表,就可以使用这种方式来声明数组。


2. 声明空数组

        有时候,你可能暂时还不知道数组中要存放哪些元素,但又需要一个数组对象来后续填充数据,这时就可以声明一个空数组。格式为:数据类型[] 数组名 = {};

示例:

int[] emptyArray = {};

        这里声明了一个名为 emptyArray 的空整型数组。虽然它目前没有包含任何元素,但它是一个合法的数组对象,可以在后续的代码中通过动态添加元素的方式来填充数据。例如,在游戏中根据玩家的不同选择来动态生成一组道具列表,就可以先声明一个空数组,然后根据选择结果向数组中添加元素。


3. 指定数组长度声明

        当你知道数组需要容纳的元素数量,但暂时还不清楚每个元素的具体值时,可以通过 new 关键字来声明数组并指定其长度。格式为:数据类型[] 数组名 = new 数据类型[数组长度];

示例:

int[] lengthArray = new int[10];

        这行代码声明了一个名为 lengthArray 的整型数组,其长度为 10。不过数组中的元素初始值都为该数据类型的默认值,对于 int 类型,默认值是 0这种声明方式在需要预先分配一定内存空间来存储数据的场景中非常有用。比如,在游戏中要统计玩家在一定时间内的得分情况,你可以先声明一个固定长度的数组来存储每一次得分,然后在游戏过程中依次将得分填入数组。


4. 声明未初始化数组

        仅声明数组变量,不进行初始化。这种方式只是在内存中为数组引用分配了空间,但该引用并没有指向任何实际的数组对象。

示例:

int[] str1;

        需要注意的是,此时 str1 只是一个未被初始化的引用,它并不指向任何实际的数组对象,所以不能直接使用。如果尝试访问或操作 str1,会引发编译错误。而像下面这样声明的空数组:

int[] str2 = {};

   str2 是一个实际存在的空数组对象,可以正常使用。虽然它没有元素,但它已经在内存中分配了相应的空间,可以进行后续的操作。这种声明方式适用于你在后续代码中才会根据具体情况来创建数组对象的场景。


5. 指定长度并初始化声明

        结合指定长度和初始化操作,这种方式既明确了数组的长度,又为数组元素赋予了初始值。格式为:数据类型[] 数组名 = new 数据类型[数组长度] { 元素值 };

示例:

int[] specificArray = new int[5] { 10, 20, 30, 40, 50 };

        此代码声明了一个长度为 5 的整型数组 specificArray,并为其元素赋了初始值。这种声明方式在你既知道数组长度又明确元素具体值的情况下非常实用。比如,在游戏中要定义一个固定的奖励数值列表,就可以使用这种方式来声明数组。


二、数组元素的访问

        在 C# 中,数组元素通过索引来访问,索引从 0 开始。也就是说,数组的第一个元素索引为 0,第二个元素索引为 1,依此类推。

示例代码:

int[] numbers = { 1, 2, 3, 4, 5 };
int firstNumber = numbers[0]; // 访问第一个元素,值为 1
int thirdNumber = numbers[2]; // 访问第三个元素,值为 3

若尝试访问超出数组索引范围的元素,会引发 IndexOutOfRangeException 异常,这就好比你去一个只有 5 个房间的酒店,却要找第 6 个房间,显然是不存在的。所以在访问数组元素时要确保索引在合法范围内。为了避免这种异常的发生,在访问数组元素之前,可以先检查索引是否在数组的有效范围内。例如:

int[] numbers = { 1, 2, 3, 4, 5 };
int index = 2;
if (index >= 0 && index < numbers.Length)
{
    int element = numbers[index];
    // 处理元素
}
else
{
    // 处理索引越界的情况
    Console.WriteLine("索引越界!");
}

三、数组的常见操作

1. 遍历数组

        遍历数组是指依次访问数组中的每个元素,这在处理数组数据时非常常见。可以使用 for 循环或 foreach 循环来实现数组的遍历。

使用 for 循环遍历数组
int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i]);
}
使用 foreach 循环遍历数组
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

2. 修改数组元素

可以通过索引来修改数组中的元素值。

示例:

int[] numbers = { 1, 2, 3, 4, 5 };
numbers[2] = 10; // 将第三个元素的值修改为 10

四、结语

        希望通过本文的介绍,你能对 C# 数组有更深入的理解,并在 Unity 游戏开发中熟练运用数组来解决各种问题。后续我们还会继续探讨 C# 中更多的数据结构和编程技巧,帮助你进一步提升开发能力,让你在 Unity 游戏开发的道路上越走越远,创造出更加精彩的游戏作品


http://www.niftyadmin.cn/n/5862391.html

相关文章

让浏览器AI起来:基于大模型Agent的浏览器自动化工具

最近有个非常火的项目,利用大模型Agent驱动浏览器完成各种操作,如网页搜索、爬虫分析、机票酒店预定、股票监控等,号称全面替代所有在浏览器上的操作,试用方式还是比较简单的,以下将进行简单介绍。 快速开始 通过pip安装: pip install browser-use安装web自动化框架:…

神经网络八股(三)

1.什么是梯度消失和梯度爆炸 梯度消失是指梯度在反向传播的过程中逐渐变小&#xff0c;最终趋近于零&#xff0c;这会导致靠前层的神经网络层权重参数更新缓慢&#xff0c;甚至不更新&#xff0c;学习不到有用的特征。 梯度爆炸是指梯度在方向传播过程中逐渐变大&#xff0c;…

c++ std::list使用笔记

c std::list使用笔记 1. 包含头文件2. 创建和初始化 std::list3. 添加元素4. 删除元素5. 访问元素6. 遍历 std::list7. 容量相关操作8. 其他常用操作9. 示例代码总结 std::list 是 C 标准库中的一个双向链表容器。与 std::vector 不同&#xff0c; std::list 不支持随机访问&…

单片机 Bootloade与二进制文件的生成

单片机的 Bootloader 是一种特殊的程序&#xff0c;负责在单片机上电后初始化硬件、更新用户应用程序&#xff08;固件&#xff09;&#xff0c;并将控制权移交给用户程序。以下是其运行机制和关键流程的详细说明&#xff1a; 1、单片机 Bootloader 的核心作用 固件更新&…

python入门 介绍及变量的使用

1.python介绍 python 是一门计算机语言 常见的计算机语言&#xff1a;python、java、C语言。。。 什么是计算机语言&#xff1a;就是让计算机知道你想干什么&#xff0c;把你的需求使用它能听懂的语言说出来 中国也有一门计算机语言&#xff1a;易语言 能认为是语言的本质上…

我使用windows笔记本通过远程桌面连接连接linux服务器,但是远程桌面连接显示“未启动对服务器的远程访问”,我应该怎么做才能使用笔记本连接服务器呢?

当使用 Windows 笔记本通过远程桌面连接 Linux 服务器时出现“未启动对服务器的远程访问”提示&#xff0c;可能是由于 Linux 服务器未开启远程桌面服务、防火墙限制、网络问题等原因导致。以下为你详细介绍不同的解决办法&#xff1a; 1. 在 Linux 服务器上开启远程桌面服务 …

力扣每日一题【算法学习day.131】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&#xff01;&#xff01;&#xff01; 习题 1.用地毯覆盖后的最少白色砖块 题…

利用瓦片信息生成xml格式的地理坐标文件(python实现)

在现代地图应用中&#xff0c;我们通常会使用瓦片&#xff08;Tiles&#xff09;来展示全球地图的局部区域。每个瓦片都具有其特定的x、y坐标和缩放级别z&#xff0c;这些信息决定了该瓦片在地图中的位置和大小。在一些应用中&#xff0c;我们可能需要为每个瓦片生成地理坐标信…