Unity游戲制作中的C#基礎(4)數組聲明和使用

一、數組的聲明

????????在 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.pswp.cn/news/896164.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896164.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896164.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Gin-Web】Bluebell社區項目梳理5:投票功能分析與實現

本文目錄 一、投票功能投票流程實現代碼redis投票 一、投票功能 投票流程 首先我們要明確&#xff0c;就是 誰&#xff08;哪個用戶&#xff1a;userID&#xff09; 給 哪個帖子&#xff08;postID&#xff09; 投了 什么票&#xff08;贊成票or反對票&#xff09;。 贊成票…

XUnity.AutoTranslator-deepseek——調用騰訊的DeepSeek V3 API,實現Unity游戲中日文文本的自動翻譯

XUnity.AutoTranslator-deepseek 本項目通過調用騰訊的DeepSeek V3 API&#xff0c;實現Unity游戲中日文文本的自動翻譯。 準備工作 1. 獲取API密鑰 訪問騰訊云API控制臺申請DeepSeek的API密鑰&#xff08;限時免費&#xff09;。也可以使用其他平臺提供的DeepSeek API。 …

Python爬蟲-批量爬取股票數據貓各股票代碼

前言 本文是該專欄的第47篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文筆者以股票數據貓為例子,基于Python爬蟲,批量獲取各股票代碼數據。 具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。廢話不多說,下面跟著筆者直接往下看正文詳細內容。(附…

《Keras 3 :使用 Vision Transformers 進行物體檢測》:此文為AI自動翻譯

《Keras 3 :使用 Vision Transformers 進行物體檢測》 作者:Karan V. Dave 創建日期:2022 年 3 月 27 日最后修改時間:2023 年 11 月 20 日描述:使用 Vision Transformer 進行對象檢測的簡單 Keras 實現。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 介紹 A…

vue-treeselect顯示unknown的問題及解決

問題 解決辦法 去node-modules包里面找到這個組件的源碼&#xff0c;在它dist文件里面找到這個文件&#xff0c;然后搜索unknown&#xff0c;把它刪掉就可以解決了。

深入剖析抽象工廠模式:設計模式中的架構利器

深入剖析抽象工廠模式&#xff1a;設計模式中的架構利器 在軟件開發領域&#xff0c;設計模式是解決常見問題的通用方案&#xff0c;而抽象工廠模式作為創建型設計模式的重要一員&#xff0c;在構建復雜軟件系統時發揮著關鍵作用。它為創建一系列相關或相互依賴的對象提供了一…

python獲取網頁內容 靠譜的做法

獲取網頁內容 response requests.get(url, verifyFalse) 通過這種方式下載網址不太靠譜, 容易出 ssl錯誤 requests.exceptions.SSLError: HTTPSConnectionPool(hostagri.hainan.gov.cn, port443): Max retries exceeded with url: /hnsnyt/xxgk/gfxwj/index_1.html (Caused by…

MFC中CString的Format、與XML中的XML_SETTEXT格式化注意

1、在MFC中導入 "msxml6.dll"&#xff0c;并使用其中的XML_SETTEXT函數&#xff0c;此調用在進行格式化的時候&#xff0c;調用的還是CString.Format()函數&#xff01; 2、用double類型的數據&#xff0c;格式化整形數%d之前&#xff0c;必須將double強轉為int&…

Linux-C-函數棧-SP寄存器

sp&#xff08;Stack Pointer&#xff0c;棧指針&#xff09;是計算機體系結構中一個非常重要的寄存器&#xff0c;下面將詳細介紹其作用和原理。 作用 1. 管理棧內存 棧是一種后進先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;的數據結構&#xff0c;在程…

從零開始用react + tailwindcs + express + mongodb實現一個聊天程序(一)

項目包含5個模塊 1.首頁 (聊天主頁) 2.注冊 3.登錄 4.個人資料 5.設置主題 一、配置開發環境 建立項目文件夾 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 創建前端項目時我們選擇javascrip…

深入理解 QObject的作用

QObject 作為 Qt 庫中所有對象的基類&#xff0c;其地位無可替代。幾乎 Qt 框架內的每一個類&#xff0c;無論是負責構建用戶界面的 QWidget&#xff0c;還是專注于數據處理與呈現的 QAbstractItemModel&#xff0c;均直接或間接繼承自 QObject。這種繼承體系賦予 Qt 類庫高度的…

22爬蟲:使用Drission Page的兩個案例

案例一&#xff1a;使用DrissionPage抓取BOSS上的招聘信息 使用requests獲取BOSS網站上的內容是非常困難的&#xff0c;但是通過網頁自動化工具DrissionPage或者是Playwright或者是Seleenium是非常容易的&#xff0c;接下來我們就給出使用DrissionPage爬取BOSS網站python招聘的…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_atoi 函數

ngx_atoi 聲明在 src/core/ngx_string.h ngx_int_t ngx_atoi(u_char *line, size_t n); 定義在 src/core/ngx_string.c ngx_int_t ngx_atoi(u_char *line, size_t n) {ngx_int_t value, cutoff, cutlim;if (n 0) {return NGX_ERROR;}cutoff NGX_MAX_INT_T_VALUE / 10;cutlim…

具有整合各亞專科醫學領域知識能力的AI智能體開發綱要(2025版)

整合各亞專科醫學領域知識能力的AI代理的開發與研究 一、引言 1.1 研究背景 在科技飛速發展的當下,人工智能(AI)已成為推動各行業變革的關鍵力量,醫療領域也不例外。近年來,AI 在醫療行業的應用取得了顯著進展,從醫學影像診斷到疾病預測,從藥物研發到個性化醫療,AI 技…

如何設計app測試用例

功能測試 測試方法&#xff1a;等價類劃分法、邊界值法、場景法、因果圖法。優先級設定&#xff1a;核心業務功能設為高優先級。需求覆蓋 正向場景、反向場景、關聯接口串場景 與后端開發確認測試用例是否全面覆蓋后端邏輯。和產品確認用例是否覆蓋本次需求&#xff0c;以及是否…

YOLO11 【四】 【DNF制作自己的數據集,切割視頻以及labelimg 閃退問題】

一、問題labelimg 閃退 一點w打標 labelimg就閃退 **原因 &#xff1a; python 版本太高 ** 解決辦法&#xff1a;單獨創建一個虛擬環境用于打標 conda create -n labelimg python3.9 二、使用python腳本切割視頻 # -*- coding: utf-8 -*- import cv2 import osdef video_…

[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction

論文網址&#xff1a;[2401.10134] Spatial-Temporal Large Language Model for Traffic Prediction 論文代碼&#xff1a;GitHub - ChenxiLiu-HNU/ST-LLM: Official implementation of the paper "Spatial-Temporal Large Language Model for Traffic Prediction" …

k2路由器登錄校園網

教程1刷入Breed&#xff0c;并手動刷入Padavan固件&#xff1a;斐訊K1、K2、K2P 刷機、刷入Breed 輔助工具 | tb (tbvv.net) Padavan下載網址&#xff1a; 我用的是&#xff1a; Padavan 登錄的網址是 192.168.123.1 Padavan配置教程&#xff1a; 先用網線連上校園網&#…

多源 BFS 算法詳解:從原理到實現,高效解決多源最短路問題

多源 BFS 是一種解決 邊權為 1 的多源最短路問題 的高效算法。其核心思想是將所有源點視為一個“超級源點”&#xff0c;通過一次 BFS 遍歷即可計算所有節點到最近源點的最短距離。以下從原理、實現和代碼示例三個方面深入講解&#xff1a; 目錄 一、原理分析 1. 單源 BFS vs…

【藍橋杯集訓·每日一題2025】 AcWing 6123. 哞叫時間 python

6123. 哞叫時間 Week 1 2月18日 農夫約翰正在試圖向埃爾茜描述他最喜歡的 USACO 競賽&#xff0c;但她很難理解為什么他這么喜歡它。 他說「競賽中我最喜歡的部分是貝茜說 『現在是哞哞時間』并在整個競賽中一直哞哞叫」。 埃爾茜仍然不理解&#xff0c;所以農夫約翰將競賽以…