如何在foreach
语句中使用KeyValuePair?
错误是
无法将类型'char'转换为'System.Collections.Generic.KeyValuePair'
foreach(KeyValuePair<char, int[]> characterEntry in occ_counts_before.Keys)
{
characterEntry.Value[i] = characterEntry.Value[i - 1] + (characterEntry.Key == current ? 1 : 0);
}
答案 0 :(得分:2)
您正在Keys
上进行迭代,因此在迭代器中收到char
而不是KeyValuePair
。
只需从您的Key
中删除属性foreach
。
如果您使用var
,则会看到此信息。当您尝试访问characterEntry时,它将清楚地显示它是char
而不是KeyValuePair
。当您从迭代中删除Keys
时,您会看到它是KeyValuePair
,允许您从char
访问.Key
,从{{1}访问int[]
}}。
答案 1 :(得分:1)
假设@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.remove("android:support:fragments");
}
实现了occ_counts_before
,则IDictionary
只是Keys
的集合,而不是char
。另外,您的KeyValuePair
的主体正在尝试更改foreach
,这是只读的。要修复它,您需要遍历字典的键,并使用每个键来访问相应的值:
Value
答案 2 :(得分:-2)
要更改条目的值,您需要通过键对其进行检索。
foreach (char entryKey in occ_counts_before.Keys) {
occ_counts_before[entryKey] = new int[] { }; // I can't figure out what are you assinging here so i put a empty int array, but you can figure out this yourself
}
请注意 foreach
中的更改