簡體   English   中英

在 C# in depth 2nd Edition 中如何以這種方式使用 C# 字典?

[英]How is the C# Dictionary used this way in C# in depth 2nd Edition?

我在 Jon Skeet 的 Depth 2nd Edition 的 C# 中遇到了以下代碼,但我不明白它是如何工作的。

Dictionary<string,int> frequencies;
frequencies = new Dictionary<string,int>();
string[] words = Regex.Split(text, @"\W+");
foreach (string word in words)
{
    if (frequencies.ContainsKey(word))
    {
        frequencies[word]++;
    }
    else
    {
        frequencies[word] = 1;
    }
}

具體如何將“word”鍵添加到字典中? 在我看來,創建了一個名為頻率的新字典,它是空的。 然后有一種方法可以使用 Regex.Split 將名為 text 的字符串拆分為字符串數組。 到目前為止一切都很好。 接下來是一個循環遍歷數組的 foreach 循環,但下一部分讓我感到困惑,它正在檢查頻率是否包含特定單詞,如果包含則將它的值增加 1 或者它是否還沒有value 將其設置為 1。但是如何首先用“word”鍵填充字典以允許對其進行檢查?

它看起來發生在這一行

frequencies[word] = 1;

但是我在任何地方都找不到一個引用,它說指定一個字典對象后跟方括號,並且對一個值的賦值也會填充鍵。 我認為您需要使用字典實例的 add 方法或在初始化字典時這樣做。

如果我是對的,這個動作的名稱是什么?

frequencies[word] = 1;

與調用相同

frequencies.Add(word, 1);

如果關鍵字不存在。 否則,您將覆蓋該值。

當你在字典上調用[something] ,你會通過鍵得到一個值something 設置也是如此。 設置值時,您可以調用dictionary[key] = value

使用的函數是[]運算符(括號運算符)

我潛入對象瀏覽器並發現有關通用字典的[]運算符的內容:

public TValue this[TKey key] { get; set; } public TValue this[TKey key] { get; set; }的成員System.Collections.Generic.Dictionary<TKey, TValue>

摘要:獲取或設置與指定鍵關聯的值。

參數: key:要獲取或設置的值的鍵。

返回值:與指定鍵關聯的值。 如果未找到指定的鍵,則獲取操作會引發 System.Collections.Generic.KeyNotFoundException,並且設置操作會使用指定的鍵創建一個新元素。

異常: System.ArgumentNullException:鍵為空。 System.Collections.Generic.KeyNotFoundException:檢索到該屬性並且集合中不存在鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM