我对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...
我在网上看了看,有些人指出,这是在修改字典时发生的,这是不允许的。但正如你所看到的,我并没有这样做。任何人都可以提出解决方案并解释为什么我会收到此错误吗?
答案 0 :(得分:3)
看来GetCScores
实际上正在返回double
,但未实现GetEnumerator
方法,这是foreach
所需的方法(该方法最可能的来源)是实现IEnumerable
)的东西。
似乎该方法没有返回Dictionary<string, double>
,或者问题中缺少一些可以进一步解释问题的代码。
当您正在迭代的集合本身在迭代期间被修改时,您听到有关正在修改的基础集合的建议。从你发布的代码来看,你似乎没有这样做。