我在 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;
}
}
具体来说,“单词”键是如何添加到字典中的?如我所见,创建了一个名为频率的新字典,它是空的。然后有一种方法可以使用 Regex.Split 将名为 text 的字符串拆分为字符串数组。到目前为止一切都很好。接下来是一个遍历数组的 foreach 循环,但下一部分让我感到困惑,它正在检查频率是否包含特定的单词,如果它包含则将它的值增加 1 或者它是否还没有value 将其设置为 1。但是如何首先使用“word”键填充字典以允许对其进行检查?
它看起来发生在这一行
frequencies[word] = 1;
但是我在任何地方都找不到引用,说明指定字典对象后跟方括号并且对值的赋值也会填充键。我认为您需要使用字典实例的 add 方法,或者在初始化字典时这样做。
如果我是正确的,这个动作的名称是什么?