我試圖創建並填充包含列表的字典,因爲它的值;即將列表添加到嵌套列表字典
Dictionary <string, List<string>> DictionaryA = new Dictionary<string,List<string>>();
字典中的值將被輸出到Excel電子表格中。
當我試圖在字典下輸入列表時出現問題。第一個Dictionary分配很好,例如Key「Key1」下的10個字符串的列表。
Dictionary <string, List<string>> DictionaryA = new Dictionary<string, List<string>>();
int i = 0;
while(page.MoveNext()) //For example, for each page in a book
{
while(words.MoveNext()) //For example, words in the page
{
if(!(ListA.Contains(ValueA)) //For example, we are looking to store instances of each word in each page of a book
{
ListA.Add(ValueA);
}
DictionaryA.Add(i, ListA);
i++;
}
sortedList = DictionaryA.Keys.ToList(); //Let's say we want to sort the Dictionary as well
sortedList.Sort()
foreach (var key in sortedList)
{
DictionaryASorted.Add(key, DictionaryA[key]);
}
ExcelOuput(DictionaryASorted); //Function to export and save an Excel File
}
因此,通過page.Movenext()循環的第一次運行是好的,字典填充與列表正確。但是,在循環的第二次運行中,找到的任何唯一「ValueA」被添加到列表「ListA」中 - 這會修改已存儲在Dictionary中的「ListA」。最終結果是一個字典,其中包含不同的頁碼作爲關鍵字,以及每個關鍵字的相同巨大的單詞列表。
如果我在每個頁面循環的開始處使用ListA.Clear()
,那麼列表最終將成爲它讀取的最後一頁的單詞,而不是其他任何內容。
如何使用此嵌套列表而不更改以前的列表被修改?我是否試圖以正確的方式做到這一點?還是有更好,更優雅的解決方案呢?
這正是我所需要的,非常感謝!爲什麼之前我沒有看到?爾加! – Eomo
@Eomo經典問題。不要感覺不好。當您將變量添加到另一個對象時,可能很難判斷變量是按值傳遞還是通過引用傳遞。 – Vulcronos