首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从OrderedDictionary检索值

无法从OrderedDictionary检索值
EN

Stack Overflow用户
提问于 2013-07-11 12:52:32
回答 1查看 113关注 0票数 0
代码语言:javascript
复制
        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中使用ı,它就能工作。为什么?

代码语言:javascript
复制
      foreach (object Character in ordered.Keys)
        {

            MessageBox.Show(ordered[Character].ToString());

        }     
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 13:12:12

OrderedDictionary的索引器有两个重载:一个采用int索引,另一个采用object

C#试图转换您的char类型以适应其中的一个重载,它选择的是将char转换为int (因为编译器认为这样做“更容易”),从而假设您是通过索引访问它。解决方案是明确的:

代码语言:javascript
复制
ordered[(object)Character].ToString());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17593904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档