Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#公共静态词典_C#_.net_Dictionary - Fatal编程技术网

C#公共静态词典

C#公共静态词典,c#,.net,dictionary,C#,.net,Dictionary,所以我试图为我的整个程序创建一个可公开访问的字典,我在我的表单下创建了它: public static Dictionary<string, int> categories = new Dictionary<string, int> { {"services", 0}, {"files", 0}, {"shortcuts", 0}, {"registry", 0}, {"browsers", 0} }; 持续引发无

所以我试图为我的整个程序创建一个可公开访问的字典,我在我的表单下创建了它:

public static Dictionary<string, int> categories = new Dictionary<string, int>
    {
    {"services", 0},
    {"files", 0},
    {"shortcuts", 0},
    {"registry", 0},
    {"browsers", 0}
    };

持续引发无效的操作异常错误。我做错了什么?

您不能在
foreach
循环中更改集合(而且
字典也属于集合)。您可以通过创建重复集合来快速解决问题,如下所示:

foreach (KeyValuePair<string, int> reference in categories.ToList())
foreach(categories.ToList()中的KeyValuePair引用)

您尝试更改foreach循环中的csope闭合变量(类别)。这是不可用的操作

这是简单的理解,好像你是允许改变变量可以存储在内存堆栈外


例如,使用一个auther变量来执行此操作。

我确实尝试过此操作,甚至还尝试过使用.ToArray()。。。但它给了我每个类别项目相同的结果。我正在读取的示例日志在其中一个类别下有6个结果,其他所有类别都应该为0,但所有类别都返回5。显然,我需要在for循环而不是foreach循环中处理这个问题。“我就是不知道怎么做。@user2613018最初的问题是关于异常的。在
.ToList
.ToArray
的情况下是否会出现异常?是的,您有一个有效的观点,它确实解决了我遇到的异常,因为我没有使用.ToList()方法得到任何异常。谢谢
categories[reference.Key] = stop - start;
foreach (KeyValuePair<string, int> reference in categories.ToList())