C# 字典(Dictionary)完全指南:從基礎(chǔ)到高級(jí)應(yīng)用
1. 什么是 C# 字典字典Dictionary是 C# 中最常用的集合類型之一它表示鍵值對(duì)的集合其中每個(gè)鍵必須是唯一的。字典基于哈希表實(shí)現(xiàn)提供了快速的查找、插入和刪除操作。2. 字典的基本用法2.1 創(chuàng)建和初始化字典以下是創(chuàng)建字典的幾種常用方式// 方式1使用構(gòu)造函數(shù) Dictionarystring, int scores new Dictionarystring, int(); // 方式2使用集合初始化器 Dictionarystring, string capitals new Dictionarystring, string { { China, Beijing }, { USA, Washington D.C. }, { Japan, Tokyo } }; // 方式3使用索引初始化器C# 6.0 Dictionarystring, int ages new Dictionarystring, int { [Alice] 25, [Bob] 30, [Charlie] 35 };2.2 添加和訪問(wèn)元素// 添加元素 Dictionarystring, int inventory new Dictionarystring, int(); inventory.Add(Apples, 50); inventory[Oranges] 30; // 使用索引器添加或修改 // 訪問(wèn)元素 int appleCount inventory[Apples]; // 直接訪問(wèn) Console.WriteLine($蘋果數(shù)量{appleCount}); // 安全訪問(wèn)避免 KeyNotFoundException if (inventory.TryGetValue(Bananas, out int bananaCount)) { Console.WriteLine($香蕉數(shù)量{bananaCount}); } else { Console.WriteLine(未找到香蕉); }2.3 更新和刪除元素// 更新元素 inventory[Apples] 60; // 直接賦值更新 // 刪除元素 inventory.Remove(Oranges); // 刪除指定鍵 inventory.Clear(); // 清空所有元素3. 字典的常用屬性和方法屬性/方法說(shuō)明示例Count獲取字典中鍵值對(duì)的數(shù)量int count inventory.Count;Keys獲取包含所有鍵的集合foreach (string key in inventory.Keys)Values獲取包含所有值的集合foreach (int value in inventory.Values)ContainsKey檢查是否包含指定鍵bool hasKey inventory.ContainsKey(Apples);ContainsValue檢查是否包含指定值bool hasValue inventory.ContainsValue(50);TryAdd嘗試添加鍵值對(duì).NET Core 2.0bool added inventory.TryAdd(Pears, 40);4. 遍歷字典4.1 使用 foreach 循環(huán)// 遍歷所有鍵值對(duì) foreach (KeyValuePairstring, int item in inventory) { Console.WriteLine(${item.Key}: {item.Value}); } // 只遍歷鍵 foreach (string key in inventory.Keys) { Console.WriteLine($鍵{key}); } // 只遍歷值 foreach (int value in inventory.Values) { Console.WriteLine($值{value}); }4.2 使用 LINQ 查詢// 篩選值大于 20 的項(xiàng) var filtered inventory.Where(kvp kvp.Value 20); // 按值排序 var sorted inventory.OrderBy(kvp kvp.Value); // 轉(zhuǎn)換為其他集合 Liststring keysList inventory.Keys.ToList(); int[] valuesArray inventory.Values.ToArray();5. 字典的高級(jí)特性5.1 自定義鍵的相等比較器// 創(chuàng)建不區(qū)分大小寫的字符串鍵字典 Dictionarystring, int caseInsensitiveDict new Dictionarystring, int( StringComparer.OrdinalIgnoreCase ); caseInsensitiveDict[Apple] 10; int value caseInsensitiveDict[APPLE]; // 可以找到值為 105.2 線程安全的字典ConcurrentDictionaryusing System.Collections.Concurrent; ConcurrentDictionarystring, int concurrentDict new ConcurrentDictionarystring, int(); // 線程安全的添加和更新 concurrentDict.TryAdd(Item1, 100); concurrentDict.AddOrUpdate(Item1, 200, (key, oldValue) oldValue 50);5.3 只讀字典IReadOnlyDictionaryIReadOnlyDictionarystring, int readOnlyDict inventory; // 只能讀取不能修改 int count readOnlyDict.Count; bool exists readOnlyDict.ContainsKey(Apples);6. 性能考慮和最佳實(shí)踐選擇合適的鍵類型鍵類型應(yīng)正確實(shí)現(xiàn)GetHashCode()和Equals()方法預(yù)估容量如果知道大致元素?cái)?shù)量可以在構(gòu)造函數(shù)中指定初始容量以提高性能避免頻繁擴(kuò)容字典在元素?cái)?shù)量超過(guò)容量時(shí)會(huì)自動(dòng)擴(kuò)容這是一個(gè)相對(duì)昂貴的操作使用 TryGetValue 避免異常比直接使用索引器更安全且性能更好考慮使用 ConcurrentDictionary在多線程環(huán)境下需要線程安全的字典操作時(shí)7. 常見問(wèn)題解答Q1字典和哈希表有什么區(qū)別DictionaryTKey, TValue是泛型類型安全的性能更好推薦使用。Hashtable是非泛型的存儲(chǔ) object 類型需要裝箱拆箱性能較差。Q2字典的鍵可以是 null 嗎取決于鍵類型的定義。對(duì)于引用類型默認(rèn)情況下鍵可以為 null但自定義比較器可能會(huì)改變這一行為。Q3如何實(shí)現(xiàn)字典的深拷貝// 淺拷貝共享值引用 Dictionarystring, Listint original new Dictionarystring, Listint(); Dictionarystring, Listint shallowCopy new Dictionarystring, Listint(original); // 深拷貝需要復(fù)制值 Dictionarystring, Listint deepCopy original.ToDictionary( kvp kvp.Key, kvp new Listint(kvp.Value) );8. 總結(jié)C# 字典是處理鍵值對(duì)數(shù)據(jù)的強(qiáng)大工具具有優(yōu)秀的查找性能和豐富的功能。掌握字典的基本操作、高級(jí)特性和最佳實(shí)踐能夠幫助你在實(shí)際開發(fā)中更高效地處理數(shù)據(jù)集合。

相關(guān)新聞

跨平臺(tái)開發(fā)新趨勢(shì):這5大混合工具如何用AI重塑應(yīng)用生態(tài)

跨平臺(tái)開發(fā)新趨勢(shì):這5大混合工具如何用AI重塑應(yīng)用生態(tài)

在數(shù)字化轉(zhuǎn)型的浪潮中,跨平臺(tái)混合開發(fā)技術(shù)已成為企業(yè)降本增效的利器。它通過(guò)一套代碼實(shí)現(xiàn)多端運(yùn)行,顯著提升了開發(fā)效率并降低了維護(hù)成本。隨著AI技術(shù)的迅猛發(fā)展,AI能力正成為混合開發(fā)工具的新核心競(jìng)爭(zhēng)力。 尤其值得關(guān)注的是,支付…

2026/8/4 9:43:00 閱讀更多
【單片機(jī)畢業(yè)設(shè)計(jì)推薦】基于 STM32 的語(yǔ)音識(shí)別智能垃圾分類桶設(shè)計(jì)與實(shí)現(xiàn) 基于 STM32 單片機(jī)的語(yǔ)音喚醒式智能垃圾桶系統(tǒng)設(shè)計(jì)(013105)

【單片機(jī)畢業(yè)設(shè)計(jì)推薦】基于 STM32 的語(yǔ)音識(shí)別智能垃圾分類桶設(shè)計(jì)與實(shí)現(xiàn) 基于 STM32 單片機(jī)的語(yǔ)音喚醒式智能垃圾桶系統(tǒng)設(shè)計(jì)(013105)

文章目錄20 個(gè)相關(guān)畢業(yè)設(shè)計(jì)備選題目項(xiàng)目研究背景摘要總體方案核心功能技術(shù)路線項(xiàng)目演示關(guān)于我們項(xiàng)目案例源碼獲取溫馨提示:本人主頁(yè)置頂文章(點(diǎn)我)有 CSDN 平臺(tái)官方提供的學(xué)長(zhǎng)聯(lián)系方式的名片! 溫馨提示:本人主頁(yè)置頂文章(點(diǎn)我)有 CSDN 平臺(tái)官…

2026/8/4 9:43:00 閱讀更多
LLM進(jìn)工業(yè)系統(tǒng),別把不確定性放錯(cuò)位置!找準(zhǔn)這5層,效率與安全雙提升

LLM進(jìn)工業(yè)系統(tǒng),別把不確定性放錯(cuò)位置!找準(zhǔn)這5層,效率與安全雙提升

LLM 應(yīng)該加在工業(yè)系統(tǒng)的哪一層? 工業(yè)系統(tǒng)最怕的不是模型不夠聰明,而是把不確定性放錯(cuò)位置。PLC、SIS、SCADA、MES 和專用算法承擔(dān)的是確定性控制、實(shí)時(shí)響應(yīng)與穩(wěn)定運(yùn)行;LLM 更適合進(jìn)入它們之上的語(yǔ)義、認(rèn)知與協(xié)同層:理解人的問(wèn)題&…

2026/8/4 10:53:02 閱讀更多
JSP混合編程實(shí)戰(zhàn):矩陣運(yùn)算與表格輸出技巧

JSP混合編程實(shí)戰(zhàn):矩陣運(yùn)算與表格輸出技巧

1. JSP混合編程實(shí)戰(zhàn):矩陣與表格輸出項(xiàng)目概述最近在整理教學(xué)資料時(shí),翻到一個(gè)經(jīng)典的JSP混合編程練習(xí)——矩陣與表格輸出。這個(gè)看似簡(jiǎn)單的作業(yè)實(shí)際上涵蓋了JSP開發(fā)中的多個(gè)核心技術(shù)點(diǎn),包括腳本元素使用、JavaBean封裝、EL表達(dá)式以及前端表格渲染…

2026/8/4 10:53:02 閱讀更多
Java并發(fā)編程面試核心知識(shí)點(diǎn)與實(shí)戰(zhàn)技巧

Java并發(fā)編程面試核心知識(shí)點(diǎn)與實(shí)戰(zhàn)技巧

1. Java并發(fā)面試題的價(jià)值與定位Java并發(fā)編程一直是面試中的"死亡區(qū)域",也是區(qū)分普通開發(fā)者和資深工程師的重要分水嶺。我整理這份題庫(kù)的初衷,源于自己作為面試官時(shí)的一個(gè)發(fā)現(xiàn):80%的候選人在面對(duì)"請(qǐng)解釋Java內(nèi)存模型"這類…

2026/8/4 10:53:02 閱讀更多
Python+Django+Vue構(gòu)建高校實(shí)驗(yàn)室管理系統(tǒng)實(shí)踐

Python+Django+Vue構(gòu)建高校實(shí)驗(yàn)室管理系統(tǒng)實(shí)踐

1. 項(xiàng)目概述:學(xué)校實(shí)驗(yàn)室管理系統(tǒng)的技術(shù)選型與實(shí)踐 實(shí)驗(yàn)室管理一直是高校信息化建設(shè)中的痛點(diǎn)。傳統(tǒng)紙質(zhì)登記方式效率低下,設(shè)備借用記錄混亂,耗材庫(kù)存難以實(shí)時(shí)監(jiān)控。我去年為某高校開發(fā)的實(shí)驗(yàn)室管理系統(tǒng),采用PythonDjangoVue技術(shù)棧&…

2026/8/4 10:53:02 閱讀更多
AI如何重塑PPT制作:從NLP到視覺設(shè)計(jì)的全流程解析

AI如何重塑PPT制作:從NLP到視覺設(shè)計(jì)的全流程解析

1. 項(xiàng)目概述:AI如何重塑PPT制作體驗(yàn) 第一次聽說(shuō)paperzz這個(gè)工具是在上周的團(tuán)隊(duì)周會(huì)上,當(dāng)時(shí)市場(chǎng)部同事用3分鐘生成了一個(gè)讓我眼前一亮的融資路演PPT。作為常年被PPT折磨的咨詢顧問(wèn),我立刻意識(shí)到這可能是改變我們工作流的革命性工具。 傳統(tǒng)PPT…

2026/8/4 10:53:02 閱讀更多
清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級(jí)轉(zhuǎn)化為CeO?-石墨烯電催化劑!

清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級(jí)轉(zhuǎn)化為CeO?-石墨烯電催化劑!

通訊作者:鄧兵、劉建國(guó)通訊單位:清華大學(xué)DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清潔能源技術(shù)與電子器件不可或缺的核心原料,然而傳統(tǒng)提取方式依賴能耗高、排放大的采礦與強(qiáng)…

2026/8/4 0:01:30 閱讀更多
貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計(jì)PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計(jì)PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

研究背景質(zhì)子交換膜燃料電池(PEMFCs)因其高能量轉(zhuǎn)換效率和清潔零排放特性備受關(guān)注,然而陰極氧還原反應(yīng)(ORR)動(dòng)力學(xué)遲緩、鉑催化劑成本高昂且耐久性不足的問(wèn)題嚴(yán)重制約了其商業(yè)化進(jìn)程。將 Pt 與 3d 過(guò)渡金屬合金化可調(diào)控…

2026/8/4 0:01:30 閱讀更多
福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

通訊作者:萬(wàn)宇馳、張久俊、呂瑞濤通訊單位:福州大學(xué) 、清華大學(xué)DOI:https://doi.org/10.1002/adfm.76112核心導(dǎo)讀:本文提出"分步升級(jí)"廢硝酸鹽處理新路線——利用廢水中的金屬離子經(jīng)快速焦耳熱(40V&#xff…

2026/8/4 0:01:30 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來(lái)沒有這么容易過(guò)! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

2026/8/3 7:44:46 閱讀更多
3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說(shuō)說(shuō) 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過(guò),那些年發(fā)過(guò)的QQ空間說(shuō)說(shuō),那些記錄青春的文字…

2026/8/3 12:53:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/3 19:34:52 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/3 19:34:54 閱讀更多