foreach语句不能对'double'类型的变量进行操作

时间:2014-07-07 12:34:25

标签: c# dictionary foreach

我对c#和使用Mathnet库都很陌生,所以我有以下代码,BasicCandidate是一个有一个名为GetCScores()的函数的类,它返回Dictionary< string, double> }。 classMeans只是Vector<double>

的数组
foreach (BasicCandidate bc in data) {
    int i = 0;

    foreach (KeyValuePair<string, double> score in bc.GetCScores()) {

      classMeans[bc.GetClassNumber()][++i] += score.Value;
    }
}

在第二个foreach声明中,我收到的错误是:

foreach statement cannot operate on variables of type double...

我在网上看了看,有些人指出,这是在修改字典时发生的,这是不允许的。但正如你所看到的,我并没有这样做。任何人都可以提出解决方案并解释为什么我会收到此错误吗?

1 个答案:

答案 0 :(得分:3)

看来GetCScores实际上正在返回double,但未实现GetEnumerator方法,这是foreach所需的方法(该方法最可能的来源)是实现IEnumerable)的东西。

似乎该方法没有返回Dictionary<string, double>,或者问题中缺少一些可以进一步解释问题的代码。

当您正在迭代的集合本身在迭代期间被修改时,您听到有关正在修改的基础集合的建议。从你发布的代码来看,你似乎没有这样做。