c# - 无法更改字典键的值

标签 c# .net dictionary

我想计算文本文件中重复字符的数量。

我写了这段代码

foreach(char c in File.ReadAllText(path))
{
    if(dic.ContainsKey(c))
    {
        int i=dic[c];
        dic[c]=i++;
    }
    else
    {
        dic.Add(c,1);
    }
}


它添加了所有唯一的单词,但是即使有重复的字符,也将所有键的值显示为1

最佳答案

我想你要:

dic[c] = i + 1;


或许也可以,尽管恕我直言,这只会增加复杂性,因为您在之后不使用i

dic[c] = ++i;




说明:

i++是后递增操作。这意味着它将i的当前值分配给dic[c],然后递增i。因此,总而言之,您始终在阅读i=1,将i=1重新放入字典中,然后将i递增到2,然后再将其发送到void。



附录:

您实际上根本不需要遍历一个临时变量。您可以简单地通过dic[c] += 1;读取并分配该值,甚至可以通过dic[c]++;递增该值。

关于c# - 无法更改字典键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19640728/

相关文章:

c# - C# 4.0 中的泛型列表

c# - ArgumentException 'child' 不是此父控件的子控件

c# - 如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码 : 0xE0434352?

c# - 在 Entity Framework Core 中编写实体 POCO 类的正确方法是什么?

java - 如何在 Java 中声明和使用 Python 的字典数组并过滤它们?

python - 如何找到字典中哪个键具有最长的值列表?

Python:操作字典和 JSON 时出错(字符串索引必须是整数,而不是 unicode)

c# - 如何在 Xamarin WebView 中访问 c​​ookie?

c# - 重载解析选择不兼容的泛型方法而不是兼容的基类方法

c# - 如何在 Entity Framework Core 中按周数排序?