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())