修改 所以,事实证明我无法在foreach循环中修改字典(感谢您指出这一点)。 这是一个混乱的代码,它可以做我想要的:
static void Main(string[] args)
{
Dictionary<char, char> dicP = new Dictionary<char, char>();
bool done=false;
char done1;
char key, val;
int ctr=0;
while (!done&&ctr<13)
{
Console.WriteLine("are you done?");
done1 = char.Parse(Console.ReadLine());
if (done1 == 'n')
{
Console.WriteLine("please choose Key and Val");
key = char.Parse(Console.ReadLine());
val = char.Parse(Console.ReadLine());
dicP.Add(key, val);
dicP.Add(val, key);
ctr++;
}
else
done = true;
}
foreach (KeyValuePair<char,char> dic in dicP)
{
Console.WriteLine(dic.Key+" "+dic.Value);
}
}
是否有任何非延迟方式来实现相同的目标(将字典中的现有值添加到字典中作为其自己的键的键)? *不是要求代码,而是提示。
答案 0 :(得分:4)
您不能在foreach循环中更改该具体字典中的字典:
foreach (KeyValuePair<char,char> dic in dicP)
{
dicP.Add(dic.Value, dic.Key);
}
您尝试在同一个dictP字典中更改foreach循环中的dictP字典。这是不允许的。