0
foreach (string myKey in mySortedList.Keys)

为什么它说不包含定义键和扩展键。我可以知道为什么吗?我已经using System.Collections.Generic;

4

3 回答 3

2

无论mySortedList实际是什么,它都没有属性Keys。编译器告诉你这么多。所以:

  1. 确定类型mySortedList
  2. 转到 MSDN,查阅文档。
  3. 利润。
于 2012-06-28T03:38:07.923 回答
0

要么mySortedList不是 a要么SortedList没有从更原始的状态中拆箱。

var list = mySortedList as SortedList;

foreach (string myKey in list.Keys) { ... }

http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx

于 2012-06-28T03:11:33.040 回答
0

也许一个例子会有所帮助。在下面的代码中,第一个 foreach 编译,但第二个没有。两者都基于相同的 SortedList 实例,但第二个将其转换为不支持 Keys 的不同类型。

        SortedList<string, string> sorted = new SortedList<string, string>();

        foreach (string s in sorted.Keys)
            Console.WriteLine(s);

        IEnumerable stillSorted = sorted as IEnumerable;

        foreaach (string t in stillSorted.Keys)
            Console.WriteLine(t);

这是你的问题吗?如果您正在传递一个对象,请尝试自己投射它,如下例所示:

        SortedList<string, string> sorted = mySortedList as SortedList<string, string>;
        if (sorted != null)
            foreach (string s in sorted.Keys)
                Console.WriteLine(s);
于 2012-06-28T05:37:11.113 回答