C# Dictionary – (C#教學) – Dictionary 就是包含keys list 及 value list 的一個集合. 在集合中, 每一行的key也會Map在value上, 只需要加入Key就可取得值.
為何需要Dictionary?
- Dictionary 的主要用途就是用一個key來尋找值, 值可以是一個Array, 一個List或一個object instance. 以一個key來獲取一個, 或一堆值把資料的提取變得容易. 例如如果想要cache一個版面的初始值(session), 只需把page name 作key就可獲得. 這些都是不需要一批批地把資料處理而只需一個或一堆值的情況.
- 有時候我們不需把一批資料作批次處理, 只需要把一個或一堆資料拿出來便可了, 這樣的話, 用List或Array會比較不便, 可能要加上Linq或for迴圈等, 程序碼會變長, 而也許會變慢. 這時, 這適合用Dictionary了.
Dictionary一覽表
本篇會介紹Dictionary的5種基本應用方法 – Dictionary 初始化, Dictionary 加入值, Dictionary 更新值, Dictionary 刪除值, Dictionary foreach迴圈. Let’s start!
方法 | 例子: |
加入Package | using System.Collections.Generic; |
初始化 | Dictionary<string, string> names = new Dictionary<string, string>(){ }; |
加入值 | names.Add(“Tim”, “Clerk”); names.Add(“John”, “Manager”); names.Add(“Mary”, “Boss”); Console.WriteLine(names[“Tim”]); //Result: Clerk |
有沒有存在KEY 加入或更新值前用 | bool isContainsTim = names.ContainsKey(“Tim”); Console.WriteLine(isContainsTim.ToString()); //Result: True |
更新值 | if (names.ContainsKey(“Tim”)){ names[“Tim”] = “Cooker”; } Console.WriteLine(names[“Tim”]); //Result: Cooker |
刪除值 | names.Remove(“Tim”); Console.WriteLine(names.Count() + “”); //Result: 2 |
加入Linq Package | using System.Linq; |
拿Keys List | List<string> keys = names.Keys.ToList<string>(); Console.WriteLine(string.Join(“,”, keys)); //Result: John,Mary |
拿Values List | List<string> values = names.Values.ToList<string>(); Console.WriteLine(string.Join(“,”, values)); //Result: Manager, Boss |
foreach迴圈 | foreach(KeyValuePair<string, string> kvp in names) { Console.WriteLine(kvp.Key + ” ” + kvp.Value); } //Result: //John – Manager //Mary – Boss |
(等如) | |
foreach迴圈 | foreach(var kvp in names) { Console.WriteLine(kvp.Key + ” ” + kvp.Value); } //Result: //John – Manager //Mary – Boss |
全部CODE
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
Dictionary<string, string> names = new Dictionary<string, string>(){ };
names.Add("Tim", "Clerk");
names.Add("John", "Manager");
names.Add("Mary", "Boss");
Console.WriteLine(names["Tim"]);
//Result: Clerk
bool isContainsTim = names.ContainsKey("Tim");
Console.WriteLine(isContainsTim.ToString());
//Result: true
if (names.ContainsKey("Tim")){
names["Tim"] = "Cooker";
}
Console.WriteLine(names["Tim"]);
//Result: Cooker
names.Remove("Tim");
Console.WriteLine(names.Count() + "");
//Result: 2
List<string> keys = names.Keys.ToList<string>();
Console.WriteLine(string.Join(",", keys));
//Result: John,Mary
List<string> values = names.Values.ToList<string>();
Console.WriteLine(string.Join(",", values));
//Result: Manager, Boss
foreach(KeyValuePair<string, string> kvp in names)
{
Console.WriteLine(kvp.Key + " " + kvp.Value);
}
//Result:
//John - Manager
//Mary - Boss
foreach(var kvp in names)
{
Console.WriteLine(kvp.Key + " " + kvp.Value);
}
//Result:
//John - Manager
//Mary - Boss
}
}
Output: Clerk
True
Cooker
2
John,Mary
Manager,Boss
John Manager
Mary Boss
John Manager
Mary Boss
相關頁面:
C# 陣列 – 學會Array陣列基本5種應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
C# List – 學會List的5種基本應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
參考資料: https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2?view=net-6.0