如何在foreach语句中修复KeyValuePair <char,int [] =“”>?

时间:2019-04-26 18:34:12

标签: c#

如何在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);
}

3 个答案:

答案 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

中的更改