OrderedDictionary ordered = new OrderedDictionary();
ordered.Add('a', "something");
ordered.Add('b', "someone");
ordered.Add('c', "somewhere");
foreach (char Character in ordered.Keys)
{
MessageBox.Show(ordered[Character].ToString());
} 我不能按他们的钥匙买东西。使用此代码,它将抛出
指数超出了范围。必须是非负的,并且小于集合的大小。
它以char 'a‘作为整数值,并试图通过索引获得值,但原因是什么?
如果我在循环object中使用ı,它就能工作。为什么?
foreach (object Character in ordered.Keys)
{
MessageBox.Show(ordered[Character].ToString());
} 发布于 2013-07-11 13:12:12
OrderedDictionary的索引器有两个重载:一个采用int索引,另一个采用object。
C#试图转换您的char类型以适应其中的一个重载,它选择的是将char转换为int (因为编译器认为这样做“更容易”),从而假设您是通过索引访问它。解决方案是明确的:
ordered[(object)Character].ToString());https://stackoverflow.com/questions/17593904
复制相似问题