C#數組與集合

🧠 一、數組(Array)

1. 定義和初始化數組

// 定義并初始化數組
int[] numbers = new int[5]; // 默認值為 0// 聲明并賦值
string[] names = { "Tom", "Jerry", "Bob" };// 使用 new 初始化
double[] scores = new double[] { 90.5, 85.3, 92.7 };

2. 訪問和修改元素

Console.WriteLine(names[0]); // 輸出 Tom
names[1] = "Alice";
Console.WriteLine(names[1]); // 輸出 Alice

3. 數組切片(C# 8.0+)

int[] arr = { 1, 2, 3, 4, 5 };
int[] slice = arr[1..4]; // [2, 3, 4]

4. 遍歷數組

foreach (string name in names)
{Console.WriteLine(name);
}

5. 數組尺寸(Length)和 Rank

Console.WriteLine($"長度: {names.Length}");
Console.WriteLine($"維度數: {names.Rank}"); // 通常為 1

6. 多維數組(矩形數組)

二維數組:
int[,] matrix = {{1, 2},{3, 4}
};Console.WriteLine(matrix[0, 1]); // 輸出 2
三維數組:
int[,,] cube = new int[2, 2, 2];
cube[0, 0, 0] = 1;

7. 鋸齒數組(Jagged Array)——數組的數組

int[][] jagged = new int[][]
{new int[] { 1, 2 },new int[] { 3 },new int[] { 4, 5, 6 }
};Console.WriteLine(jagged[2][1]); // 輸出 5

8. 常用數組方法(System.Array)

Array.Sort(scores); // 排序
Array.Reverse(scores); // 反轉
int index = Array.IndexOf(names, "Alice"); // 查找索引

📦 二、集合(Collections)

1. ArrayList(非泛型)

?不推薦使用,因為沒有類型安全。

ArrayList list = new ArrayList();
list.Add("Apple");
list.Add(100);
list.Remove("Apple");

2. List<T>(泛型集合,推薦使用)

List<string> fruits = new List<string>() { "Apple", "Banana" };
fruits.Add("Orange");
fruits.Remove("Banana");foreach (string fruit in fruits)
{Console.WriteLine(fruit);
}

3. 集合初始值設定項(Collection Initializers)

List<int> numbersList = new List<int> { 1, 2, 3 };

4. SortedList<TKey, TValue>(按鍵排序)

SortedList<int, string> sortedList = new SortedList<int, string>
{{ 3, "Three" },{ 1, "One" },{ 2, "Two" }
};foreach (var item in sortedList)
{Console.WriteLine($"{item.Key}: {item.Value}");
}

5. LinkedList<T>(鏈表結構)

LinkedList<string> linkedList = new LinkedList<string>();
linkedList.AddLast("A");
linkedList.AddLast("B");
linkedList.AddFirst("X");

6. Dictionary<TKey, TValue>(鍵值對)

Dictionary<string, int> ages = new Dictionary<string, int>
{{ "Tom", 25 },{ "Jerry", 30 }
};ages["Alice"] = 28;if (ages.ContainsKey("Tom"))
{Console.WriteLine(ages["Tom"]);
}

7. Queue<T>(先進先出)

Queue<string> queue = new Queue<string>();
queue.Enqueue("Task 1");
queue.Enqueue("Task 2");Console.WriteLine(queue.Dequeue()); // Task 1

8. Stack<T>(后進先出)

Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);Console.WriteLine(stack.Pop()); // 2

🧩 三、綜合練習項目模板(Program.cs)

using System;
using System.Collections;
using System.Collections.Generic;class Program
{static void Main(){Console.WriteLine("=== C# 數組與集合綜合練習 ===\n");// 1. 數組操作int[] nums = { 5, 2, 8, 1 };Array.Sort(nums);Console.WriteLine("排序后的數組:");foreach (int n in nums) Console.Write(n + " ");// 2. 多維數組int[,] matrix = { { 1, 2 }, { 3, 4 } };Console.WriteLine("\n\n矩陣元素:");for (int i = 0; i < matrix.GetLength(0); i++){for (int j = 0; j < matrix.GetLength(1); j++){Console.Write(matrix[i, j] + " ");}Console.WriteLine();}// 3. 列表 List<T>List<string> fruits = new List<string> { "Apple", "Banana" };fruits.Add("Orange");Console.WriteLine("\n水果列表:");foreach (string f in fruits) Console.WriteLine(f);// 4. 字典 DictionaryDictionary<string, int> ages = new Dictionary<string, int>{{ "Tom", 25 },{ "Jerry", 30 }};Console.WriteLine("\n年齡信息:");foreach (var item in ages){Console.WriteLine($"{item.Key}: {item.Value}");}// 5. 隊列 QueueQueue<string> queue = new Queue<string>();queue.Enqueue("任務1");queue.Enqueue("任務2");Console.WriteLine("\n隊列取出:" + queue.Dequeue());// 6. 棧 StackStack<int> stack = new Stack<int>();stack.Push(10);stack.Push(20);Console.WriteLine("棧取出:" + stack.Pop());Console.WriteLine("\n按任意鍵退出...");Console.ReadKey();}
}

📋 四、運行效果(模擬)

=== C# 數組與集合綜合練習 ===排序后的數組:
1 2 5 8 矩陣元素:
1 2 
3 4 水果列表:
Apple
Banana
Orange年齡信息:
Tom: 25
Jerry: 30隊列取出:任務1
棧取出:20按任意鍵退出...

📌 五、總結對比表

類型是否泛型是否有序是否可變典型用途
Array???固定大小數據存儲
List<T>???動態數組
Dictionary<TKey, TValue>???鍵值查找
SortedList<TKey, TValue>???按鍵排序
Queue<T>???FIFO 場景
Stack<T>???LIFO 場景
LinkedList<T>???插入/刪除頻繁

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

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

相關文章

本地部署Scratch在線編輯器

1、說明 由于在GitHub上沒有找到Scratch源碼&#xff0c;所以只能編寫腳本下載官網相關資源&#xff0c;然后在本地部署。 如果你找到了Scratch源碼&#xff0c;請自行編譯部署&#xff0c;可忽略以下操作。 項目結構&#xff1a;scratch.mit.edu |-- chunks | |-- fetch-w…

Gmsh 讀取自定義輪廓并劃分網格:深入解析與實踐指南

一、Gmsh 簡介 (一)Gmsh 是什么 Gmsh 是一款功能強大的開源有限元網格生成器,廣泛應用于工程仿真、數值模擬以及計算機圖形學等領域。它為用戶提供了從幾何建模到網格劃分的一整套解決方案,能夠有效處理復雜幾何形狀,生成高質量的二維和三維網格,滿足多種數值方法的需求…

Elabscience 精準識別 CD4+ T 細胞|大鼠源單克隆抗體 GK1.5,適配小鼠樣本的流式優選方案

內容概要 CD4 T細胞在免疫調節、自身免疫疾病及腫瘤免疫治療中發揮關鍵作用。Elabscience推出的APC Anti-Mouse CD4 Antibody (GK1.5)&#xff08;貨號&#xff1a;E-AB-F1097E&#xff09;是一款高特異性、低背景的流式抗體&#xff0c;專為小鼠CD4 T細胞亞群檢測優化設計。該…

【RabbitMQ】應用問題、仲裁隊列(Raft算法)和HAProxy負載均衡

&#x1f525;個人主頁&#xff1a; 中草藥 &#x1f525;專欄&#xff1a;【中間件】企業級中間件剖析 一、冪等性保障 什么是冪等性&#xff1f; 冪等性是指對一個系統進行重復調用&#xff08;相同參數&#xff09;&#xff0c;無論同一操作執行多少次&#xff0c;這些請求…

51 單片機頭文件 reg51.h 和 reg52.h 詳解

51 單片機頭文件詳解 51 單片機的頭文件reg51.h和reg52.h是開發中非常重要的文件,它們定義了單片機的特殊功能寄存器 (SFR) 和位地址。以下是對這兩個頭文件的詳細解析: 1. 頭文件概述 reg51.h:針對標準 8051 單片機(4KB ROM, 128B RAM) reg52.h:針對增強型 8052 單片…

前端的面試筆記——JavaScript篇(二)

一、instanceof 在 JavaScript 里&#xff0c;instanceof 是一個相當實用的運算符&#xff0c;它的主要功能是檢查某個對象是否屬于特定構造函數的實例。這里需要明確的是&#xff0c;判斷的依據并非對象的類型&#xff0c;而是其原型鏈。下面為你詳細介紹它的用法和特點&…

”一維前綴和“算法原理及模板

前綴和&#xff0c;就是通過一種方法來求出數組中某個連續區間的元素的和的辦法。我們通常先預處理出來一個前綴和數組&#xff0c;然后把數組中進行元素填充后再進行后續使用。 我們通過一道模板題或許能更加理解其意思。 現在的問題就是&#xff1a;如果我們用暴力枚舉來記錄…

5.13/14 linux安裝centos及一些操作命令隨記

一、環境準備 VMware Workstation版本選擇建議 CentOS 7 ISO鏡像下載指引 虛擬機硬件配置建議&#xff08;內存/處理器/磁盤空間&#xff09; 二、系統基礎命令 一、環境準備 1.VMware Workstation版本選擇建議 版本選擇依據 選擇VMware Workstation的版本時&#xff0c…

spring學習->sprintboot

spring IoC(控制翻轉): 控制:資源的控制權(資源的創建&#xff0c;獲取&#xff0c;銷毀等) 反轉:和傳統方式不一樣(用上面new什么)&#xff0c;不用new讓ioc來發現你用什么&#xff0c;然后我來給什么 DI:(依賴注入) 依賴:組件的依賴關系。如newsController依賴NewsServi…

iOS 閱后即焚功能的實現

iOS閱后即焚功能實現步驟 一、功能設計要點 消息類型支持&#xff1a;文本、圖片、視頻、音頻等。銷毀觸發條件&#xff1a; 接收方首次打開消息后啟動倒計時。消息存活時間可配置&#xff08;如5秒、1分鐘&#xff09;。 安全要求&#xff1a; 端到端加密&#xff08;E2EE&a…

OpenHarmony 開源鴻蒙南向開發——linux下使用make交叉編譯第三方庫——mqtt庫

準備工作 請依照這篇文章搭建環境 OpenHarmony 開源鴻蒙南向開發——linux下使用make交叉編譯第三方庫——環境配置_openharmony交叉編譯-CSDN博客 下載 wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.9.tar.xz 解壓 tar -xf mkdir ./out cd ./out Cmake命…

武漢SMT貼片工藝優化與生產效能提升路徑

內容概要 隨著華中地區電子制造產業集群的快速發展&#xff0c;武漢SMT貼片行業面臨工藝升級與效能提升的雙重挑戰。本文聚焦SMT生產全流程中的關鍵環節&#xff0c;從鋼網印刷精度控制、回流焊溫度曲線優化、AOI檢測系統迭代三大核心工藝出發&#xff0c;結合區域產業鏈特點提…

線程池(ThreadPoolExecutor)實現原理和源碼細節是Java高并發面試和實戰開發的重點

一、線程池核心流程圖 ----------------- | 提交任務 | submit/execute -----------------|v ----------------- | 判斷核心線程數 | < corePoolSize&#xff1f; -----------------|Yes |Nov v [創建新線程] -----------------| 隊列是否滿&a…

學習海康VisionMaster之直方圖工具

一&#xff1a;進一步學習了 今天學習下VisionMaster中的直方圖工具&#xff1a;就是統計在ROI范圍內進行灰度級分布的統計 二&#xff1a;開始學習 1&#xff1a;什么是直方圖工具&#xff1f; 直方圖工具針對輸入灰度圖像的指定ROI區域&#xff0c;輸出該區域的圖像灰度直方…

計算機網絡 : Socket編程

計算機網絡 &#xff1a; Socket編程 目錄 計算機網絡 &#xff1a; Socket編程引言1.UDP網絡編程1.1 網絡地址與端口轉換函數1.2 本地環回1.3 EchoServer1.4 DictServer1.5 DictServer封裝版1.6 簡單聊天室 2.TCP網絡編程2.1 TCP Socket API詳解2.2 Echo Server2.3 Echo Serve…

Elasticsearch/OpenSearch 中doc_values的作用

目錄 1. 核心作用 2. 適用場景 3. 與 index 參數的對比 4. 典型配置示例 場景 1&#xff1a;僅用于聚合&#xff0c;禁止搜索 場景 2&#xff1a;優化大字段存儲 5. 性能調優建議 6. 底層原理 doc_values 是 Elasticsearch/OpenSearch 中用于優化查詢和聚合的列式存儲結…

使用mermaid 語言繪畫時序圖和鏈路圖

給大家展示一下效果&#xff0c; 官方地址&#xff1a;https://mermaid.nodejs.cn/ 官方開發地&#xff1a;https://mermaid.nodejs.cn/intro/#google_vignette graph LR%% 樣式定義&#xff08;完全保留&#xff09; classDef user fill:#E1F5FE,stroke:#0288D1;classDef …

C++ Kafka客戶端(cppkafka)安裝與問題解決指南

一、cppkafka簡介 cppkafka是一個現代C的Apache Kafka客戶端庫&#xff0c;它是對librdkafka的高級封裝&#xff0c;旨在簡化使用librdkafka的過程&#xff0c;同時保持最小的性能開銷。 #mermaid-svg-qDUFSYLBf8cKkvdw {font-family:"trebuchet ms",verdana,arial,…

STM32的ADC模塊中,**采樣時機(Sampling Time)**和**轉換時機(Conversion Time),獲取數據的時機詳解

在STM32的ADC模塊中&#xff0c;**采樣時機&#xff08;Sampling Time&#xff09;和轉換時機&#xff08;Conversion Time&#xff09;**是ADC工作流程中的兩個關鍵階段&#xff0c;直接影響采樣精度和系統實時性。以下是詳細解析&#xff1a; 1. 采樣時機&#xff08;Samplin…

Pageassist安裝(ollama+deepseek-r1)

page-assist網站&#xff1a;https://github.com/n4ze3m/page-assist 首先電腦配置node.js&#xff0c;管理員打開命令窗口輸入下面命令下載bun npm install -g buncd 到你想要安裝page-assist的地方&#xff08;推薦桌面&#xff09; 輸入下列命令 git clone https://gith…