C#如何對Dictionary遍歷賦值
C#對Dictionary遍歷賦值
Dictionary<int, string> datatable = new Dictionary<int, string>();
datatable.Add(1, "hello1");
datatable.Add(2, "hello2");
int[] keys = datatable.Keys.ToArray();
for (int i = 0; i < keys.Length; i++)
{
if (datatable[keys[i]] == "hello2")
{
datatable[keys[i]] = "hello";
}
}C#循環(huán)遍歷Dictionary,并且可以改變值
通常的C#循環(huán)遍歷是用foreach循環(huán)遍歷。好處就是簡單,但是缺點(diǎn)就是無法在循環(huán)中改變Dictionary的值。
Dictionary <string,int>
一下遍歷這個Dictionary。
代碼:
for (int i = 0; i < HostMessage.Count; i++)
{
var item = HostMessage.ElementAt(i);
Console.WriteLine("key is " + item.Key);
Console.WriteLine("value is " + item.Value);
if (item.Key == "MS01")
{
HostMessage["MT01"] = 102;
}
}默認(rèn)HostMessage中有值。
這樣就可以了。
我這樣寫有個BUG,就是在終端輸出依舊是沒有改變值的,其實(shí)是改變了,是不過沒有及時輸出。要是用以下代碼就好了。
for (int i = 0; i < HostMessage.Count; i++)
{
var item = HostMessage.ElementAt(i);
Console.WriteLine("key is " + item.Key);
Console.WriteLine("value is " + item.Value);
if (item.Key == "MS01")
{
HostMessage["MT01"] = 102;
}
}
Console.WriteLine("*****************************8888");
foreach (string key in HostMessage.Keys)
{
Console.WriteLine("Key = {0}, Value = {1}", key, HostMessage[key]);
}補(bǔ)充:
更新一個新用法
Dictionary<Dictionary<string, int>, string> zh = new Dictionary<Dictionary<string, int>, string>();
如何輸出這個字典?
直接上示例代碼
Dictionary<Dictionary<string, int>, string> zh = new Dictionary<Dictionary<string, int>, string>();
Dictionary<string, int> HostM = new Dictionary<string, int>();
Dictionary<string, string> ss = new Dictionary<string, string>();
HostM.Add("MT01", 101);
HostM.Add("MT09",100);
HostM.Add("MT010", 101);
HostM.Add("MT02", 100);
HostM.Add("MT03", 101);
HostM.Add("MT04", 100);
HostM.Add("MT05", 101);
HostM.Add("MT08", 100);
HostM.Add("Ms01", 101);
HostM.Add("Ms02", 100);
HostM.Add("LD01", 101);
HostM.Add("PS01", 100);
ss.Add("MT01", "traytab");
ss.Add("MT09", "solidifyOut");
ss.Add("MT010", "solidifyIn");
ss.Add("MT02", "WBIn");
ss.Add("MT03", "WBOUt");
ss.Add("MT04", "Finish");
ss.Add("MT05", "are");
ss.Add("MT08", "spc");
ss.Add("Ms01", "LDmachine");
ss.Add("Ms02", "qwe");
ss.Add("LD01", "asc");
ss.Add("PS01", "sdf");
foreach (string key in HostM.Keys)
{
Dictionary<string, int> ac = new Dictionary<string, int>();
ac.Add(key, HostM[key]);
zh.Add(ac, ss[key]);
}
foreach (Dictionary<string, int> key in zh.Keys)
{
foreach (string kkey in key.Keys)
{
Console.WriteLine(kkey + "_" + key[kkey] + "_" + zh[key]);
}這樣就可以了。
前面的都是給字典添加內(nèi)容的,就不說了,解釋最后三行代碼
foreach (Dictionary<string, int> key in zh.Keys)
{
foreach (string kkey in key.Keys)
{
Console.WriteLine(kkey + "_" + key[kkey] + "_" + zh[key]);
}第一行,因?yàn)閦h的key是一個字典,所以foreach的key要設(shè)置為Dictionary<string, int> ,第二foreach的kkey因?yàn)镈ictionary<string, int> 的key是string,所以設(shè)置kkey為string。
這樣思路就清晰了,kkey是(Dictionary<string, int> 的key(鍵)key是Dictionary<string, int>字典,所以值為key[kkey].zh[key]為最外圍的字典內(nèi)容。這樣只要思路理清了,就輸出正確了。
我在這里繞了好久才想明白。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#運(yùn)算符之與,或,異或及移位運(yùn)算小結(jié)
本文是對C#中的與,或,異或及移位運(yùn)算進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
C#實(shí)現(xiàn)跨進(jìn)程條件變量的示例代碼
C#提供的多進(jìn)程同步對象有互斥鎖和信號量,但是并沒有條件變量,雖然信號量條件變量一定程度可以等效,但是具體的使用還是會有區(qū)別,本文提供了一種條件變量的實(shí)現(xiàn)方法,可以用于進(jìn)程間的同步控制,需要的朋友可以參考下2024-07-07
.Net WInform開發(fā)筆記(三)談?wù)勛灾瓶丶?自定義控件)
自定義控件的出現(xiàn)有利于用戶更好的實(shí)現(xiàn)自己的想法,可以封裝一些常用的方法,屬性等等,本文詳細(xì)介紹一下自定義控件的實(shí)現(xiàn),感興趣的朋友可以了解下2013-01-01
UnityShader使用圖像疊加實(shí)現(xiàn)運(yùn)動模糊
這篇文章主要為大家詳細(xì)介紹了UnityShader使用圖像疊加實(shí)現(xiàn)運(yùn)動模糊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
利用C#/VB.NET實(shí)現(xiàn)PPT轉(zhuǎn)換為HTML
利用PowerPoint可以很方便的呈現(xiàn)多媒體信息,且信息形式多媒體化,表現(xiàn)力強(qiáng)。但難免在某些情況下我們會需要將PowerPoint轉(zhuǎn)換為HTML格式,本文就為大家整理了轉(zhuǎn)換方法,希望對大家有所幫助2023-05-05

