C#數組(一維數組、多維數組、交錯數組、參數數組)

在 C# 中,數組是一種用于存儲固定大小的相同類型元素的集合。數組可以包含值類型、引用類型或對象類型的元素,并且在內存中是連續存儲的。以下是關于 C# 數組的詳細介紹:

1. 一維數組

聲明與初始化
// 聲明數組
int[] numbers; ? ? ? ? ? ? // 聲明但未初始化
int[] scores = new int[5]; // 初始化長度為5的數組(默認值為0)
?
// 聲明并初始化元素
string[] names = new string[3] { "Alice", "Bob", "Charlie" };
int[] primes = { 2, 3, 5, 7, 11 }; ? ? ? // 簡化語法
訪問與修改元素
int[] arr = new int[3];
arr[0] = 100; ? ? ? ? ?// 設置元素
int value = arr[0]; ? ?// 獲取元素(索引從0開始)
數組長度
int length = arr.Length; // 獲取數組長度(只讀屬性)

2. 多維數組

二維數組
// 聲明與初始化
int[,] matrix = new int[3, 4]; ? ? ? ? ?// 3行4列的矩陣
int[,] table = { {1,2}, {3,4}, {5,6} }; // 3行2列
?
// 訪問元素
matrix[0, 1] = 10; ?// 第1行第2列
int val = table[2, 0]; // 獲取第3行第1列的值
三維數組
int[,,] cube = new int[2, 2, 2]; // 三維數組
cube[0, 1, 0] = 20;

3. 交錯數組(數組的數組)

交錯數組是一個數組,其元素是數組,每個子數組可以有不同的長度。

// 聲明與初始化
int[][] jaggedArray = new int[3][]; ?// 包含3個數組的交錯數組
jaggedArray[0] = new int[2]; ? ? ? ? // 第一個子數組長度為2
jaggedArray[1] = new int[3] {1,2,3}; // 第二個子數組長度為3
?
// 簡化語法
int[][] jagged = {new int[] {1,2},new int[] {3,4,5}
};
?
// 訪問元素
int x = jagged[1][2]; // 獲取第二個子數組的第三個元素

4. 數組方法與屬性

常用屬性
  • Length:獲取數組總元素數(多維數組返回所有維度的乘積)。

  • Rank:獲取數組的維數(例如,二維數組返回 2)。

常用方法
int[] nums = { 3, 1, 4 };
?
// 排序
Array.Sort(nums); ? ? ? ? // 升序排序:[1,3,4]
?
// 反轉
Array.Reverse(nums); ? ? ?// 反轉數組:[4,3,1]
?
// 查找元素
int index = Array.IndexOf(nums, 3); // 返回索引1
?
// 填充元素
Array.Fill(nums, 0); ? ? ?// 所有元素設為0:[0,0,0]
?
// 復制數組
int[] copy = new int[3];
Array.Copy(nums, copy, 3); // 復制nums到copy

5. 數組遍歷

for 循環
int[] arr = { 1, 2, 3 };
for (int i = 0; i < arr.Length; i++) {Console.WriteLine(arr[i]);
}
foreach 循環
foreach (int num in arr) {Console.WriteLine(num);
}
LINQ 查詢
using System.Linq;
var evenNums = arr.Where(n => n % 2 == 0);

6. 數組與泛型集合

數組是固定大小的,而泛型集合(如 List<T>)可以動態調整大小:

using System.Collections.Generic;
?
List<int> list = new List<int>();
list.Add(10); ? ? ? ? // 添加元素
list.AddRange(arr); ? // 添加數組元素
int count = list.Count; // 獲取元素數

7. 參數數組(params)

允許方法接受可變數量的參數:

void PrintNumbers(params int[] numbers) {foreach (int num in numbers) {Console.WriteLine(num);}
}
?
// 調用
PrintNumbers(1, 2, 3); ? ? // 傳遞多個參數
PrintNumbers(new int[]{4,5}); // 傳遞數組

8. 數組協變(Covariance)

引用類型數組支持協變,即子類數組可以隱式轉換為父類數組:

object[] objArray = new string[5]; // 合法:string是object的子類
objArray[0] = "hello";
objArray[1] = 123; // 運行時異常:不能將int賦值給string[]

總結

類型語法特點
一維數組int[] arr;元素連續存儲,固定長度
多維數組int[,] matrix;矩形結構,每維長度固定
交錯數組int[][] jagged;數組的數組,子數組長度可變
參數數組params int[] numbers方法接受可變數量的參數

數組是 C# 中基礎且重要的數據結構,適合存儲和處理固定大小的數據集。對于動態數據,建議使用泛型集合(如 List<T>)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91279.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91279.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91279.shtml

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

相關文章

Dify離線安裝包-集成全部插件、模板和依賴組件,方便安可內網使用

項目介紹 Dify一鍵離線安裝包&#xff0c;集成安裝了全部插件、模板&#xff0c;并集成了dify全部插件所需的依賴組件。方便你在內網、安可環境等離線狀態下使用。 Dify是一個開源的LLM應用開發平臺。其直觀的界面結合了AI工作流、RAG管道、Agent、模型管理、可觀測性功能等&…

面試150 翻轉二叉樹

思路 采用先序遍歷&#xff0c;可以通過新建根節點node&#xff0c;將原來root的右子樹連到去node的左子樹中&#xff0c;root的左子樹連到去node的右子樹中。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): …

C++-linux系統編程 3.gcc編譯工具

GCC編譯工具鏈完全指南 GCC&#xff08;GNU Compiler Collection&#xff09;是Linux系統下最常用的編譯器套件&#xff0c;支持C、C、Objective-C等多種編程語言。本章將深入講解GCC的編譯流程、常用選項及項目實戰技巧。 一、GCC編譯的四個核心階段 GCC編譯一個程序需要經過四…

uView UI 組件大全

uView UI 是一個基于 uni-app 的高質量 UI 組件庫&#xff0c;提供豐富的跨平臺組件&#xff08;支持 H5、小程序、App 等&#xff09;。以下是其核心組件的分類大全及功能說明&#xff0c;結合最新版本&#xff08;1.2.10&#xff09;整理&#xff1a; &#x1f4e6; 一、基礎…

QWidget 和 QML 的本質和使用上的區別

QWidget 和 QML 是 Qt 框架中兩種不同的 UI 開發技術&#xff0c;它們在底層實現、設計理念和使用場景上有顯著區別。以下是它們的本質和主要差異&#xff1a;1. 本質區別特性QWidgetQML (Qt Modeling Language)技術基礎基于 C 的面向對象控件庫基于聲明式語言&#xff08;類似…

中轉模型服務的風險

最近發現一些 AI 相關帖子下&#xff0c;存在低質 claude code 中轉的小廣告。 其中轉的基本原理就是 claude code 允許自己提供 API endpoint 和 key&#xff0c;可以使用任意一個 OpenAI API 兼容的供應商&#xff0c;就這么簡單。 進一點 claude token&#xff0c;再混入一點…

前端Vue.js面試題(3)

???目錄 1.v-model的原理是什么樣的&#xff1f; 2.Vue的生命周期&#xff1f; 3.Vue子組件和父組件執行順序&#xff1f; 4.created和mounted的區別&#xff1f; 5.vue中&#xff0c;推薦在哪個生命周期發起請求&#xff1f; 6.keep-alive中的生命周期有哪些&#xf…

leetcode:HJ18 識別有效的IP地址和掩碼并進行分類統計[華為機考][字符串]

學習要點 bitset<8>ostringstreamstoistring.findstring.substr 題目鏈接 識別有效的IP地址和掩碼并進行分類統計_牛客題霸_牛客網 題目描述 解法 #include <iostream> #include <bits/stdc.h> #include <sstream> #include <string> #inclu…

JavaEE Tomcat

企業開發介紹 JavaEE 規范 JavaEE規范是J2EE規范的新名稱,早期被稱為 J2EE 規范,其全稱是 Java 2 Platform Enterprise Edition,是由 SUN 公司領導、各廠家共同制定并得到廣泛認可的工業標準(JCP 組織成員)。 其中,JCP 組織(官網)的全稱是 Java Community Process,…

什么是神經網絡,常用的神經網絡,如何訓練一個神經網絡

神經網絡&#xff1a;是深度學習的核心技術。模仿生物神經元工作方式的計算模型&#xff0c;由大量互相連接是神經元組成&#xff0c;通過數據學習復雜的模式和關系。1、神經網絡基本組成&#xff1a;神經元、層、連接神經元神經網絡的最小單元。每個神經元接受輸入&#xff0c…

BigFoot Decursive 2.7.28 2025.07.11

插件顯示為獨立插件&#xff0c;之前是團隊框架自帶 BigFoot Decursive lua-CSDN博客 /decursive 命令打開插件 /DCRSHOW 打開設置列表 然后優先列表里面再點【p】添加&#xff0c;你要驅散得優先職業 一鍵驅散lua插件下載&#xff1a; https://download.csdn.net/downloa…

可穿戴智能硬件在國家安全領域的應用

可穿戴智能硬件在國家安全領域具有廣泛應用&#xff0c;涵蓋軍事作戰、安防監控、邊境巡邏等多個方面&#xff0c;以下是具體介紹&#xff1a;軍事作戰與訓練&#xff1a;戰場態勢感知&#xff1a;士兵佩戴集成多種傳感器的智能頭盔、智能背心等&#xff0c;可實時獲取戰場環境…

后端接口通用返回格式與異常處理實現

前言 目前大部分系統都是前后端分離架構&#xff0c;后端提供接口并返回 JSON 數據&#xff0c;前端接收數據后進行處理展示。為了提高前后端協作效率&#xff0c;后端接口返回值采用固定格式十分必要。 后端接口返回值通用格式 通用返回值通常包含 4 個核心字段&#xff0c…

【yolo】模型訓練參數解讀

在YOLO&#xff08;You Only Look Once&#xff09;目標檢測模型的訓練過程中&#xff0c;數據增強是一項至關重要且極具“藝術性”的技術。它通過對訓練圖像進行一系列隨機變換&#xff0c;人為地創造出更多樣化的訓練樣本&#xff0c;從而有效提升模型的泛化能力、魯棒性&…

IPsec:網絡層的加密盾牌與HTTPS的差異解析

??一、IPsec核心原理??1. 安全封裝結構?┌───────────────┬────────────────┬──────────────────────┐ │ IP頭部 │ IPSec頭部 │ 加密/認證的載荷 │ │ (路由尋址) │ (AH/ESP) │…

【Python辦公】Python如何批量提取PDF中的表格

目錄 專欄導讀概述主要工具庫介紹1. tabula-py2. camelot-py3. pdfplumber4. PyMuPDF (fitz)環境準備安裝依賴Java環境配置(tabula-py需要)方法一:使用tabula-py提取表格基礎用法高級配置方法二:使用camelot-py提取表格方法三:使用pdfplumber提取表格批量處理多個PDF文件數…

MySQL自定義order by排序規則

數據表create table tb_user (id bigint auto_incrementprimary key,name varchar(16) not null,age int not null,address varchar(128) null );INSERT INTO test.tb_user (id, name, age, address) VALUES (1, 張三, 18, China); INSERT INTO test.tb_…

112套開題答辯行業PPT模版

畢業答辯開題報告&#xff0c;畢業答辯&#xff0c;論文設計PPT&#xff0c;清新論文答辯PPT模版&#xff0c;畢業論文答辯開題報告PPT&#xff0c;答辯演講通用PPT模版&#xff0c;文藝時尚畢業答辯PPT模版&#xff0c;簡約畢業論文答辯PPT模版112套開題答辯行業PPT模版&#…

驅動開發系列61- Vulkan 驅動實現-SPIRV到HW指令的實現過程(2)

本節繼續介紹下SPIR-V到LLVM IR的轉換過程,重點分析其核心機制和關鍵轉換步驟。我們將從 LLVM 入手,結合實SPIR-V結構逐步轉換為符合 LLVM IR 語義的表示方式。 一:詳細過程 1. 創建llvm::module llvm::LLVMContext llvmContext; std::unique_ptr<llvm::Mod…

集訓Demo2

做一個類似原神圣遺物生成、穿戴、卸下的案例創建項目創建數據庫添加圣遺物獲取4個數字&#xff0c;對應圣遺物隨機的四種屬性構造對象添加批量刪除圣遺物foreach構造數組轉移圣遺物分別在items和character兩個庫中根據id獲取對象&#xff0c;判斷唯一id存在哪個數據庫中在item…