首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C# .NET 2.0中,有什么简单的方法可以反向执行foreach?

在C# .NET 2.0中,有什么简单的方法可以反向执行foreach?
EN

Stack Overflow用户
提问于 2008-09-17 21:00:41
回答 13查看 19.3K关注 0票数 16

假设我有一个Dictionary对象:

代码语言:javascript
运行
复制
Dictionary myDictionary<int, SomeObject> = new Dictionary<string, SomeObject>();

现在,我想以相反的顺序遍历字典。我不能使用简单的for循环,因为我不知道字典的关键字。foreach很简单:

代码语言:javascript
运行
复制
foreach (SomeObject object in myDictionary.Values)
{
    // Do stuff to object
}

但我如何才能反向执行此操作呢?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2008-09-17 13:17:01

我会用SortedList而不是字典。您仍然可以通过键来访问它,但也可以通过索引来访问它。

代码语言:javascript
运行
复制
SortedList sCol = new SortedList();

sCol.Add("bee", "Some extended string matching bee");
sCol.Add("ay", "value matching ay");
sCol.Add("cee", "Just a standard cee");

// Go through it backwards.
for (int i = sCol.Count - 1; i >=0 ; i--)
    Console.WriteLine("sCol[" + i.ToString() + "] = " + sCol.GetByIndex(i));

// Reference By Key
foreach (string i in sCol.Keys)
    Console.WriteLine("sCol[" + i + "] = " + sCol[i]);

// Enumerate all values
foreach (string i in sCol.Values)
    Console.WriteLine(i);

值得注意的是,排序列表仅存储按键排序的键/值对。

票数 20
EN

Stack Overflow用户

发布于 2008-09-17 13:02:21

字典或任何其他形式的哈希表都没有排序。因此,您正在尝试做的是毫无意义的:)

票数 28
EN

Stack Overflow用户

发布于 2008-09-17 21:05:53

如果您使用的是.NET 3.5,则可以在IEnumerables上使用.Reverse()扩展方法。例如:

代码语言:javascript
运行
复制
foeach (SomeObject o in myDictionary.Values.Reverse())
{
     // Do stuff to object
}
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/82881

复制
相关文章

相似问题

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