预先列出一个或哪个是正确的方法?

时间:2011-08-14 04:49:04

标签: c# list .net-4.0

我有一个List<Player>我希望输出有序的字符串,所以我想知道这样做的正确方法是什么,如果一个简单的foreach总是输出它已经订购(到目前为止它从我做的测试?)

例如:

int position = 0;
foreach (var player in list)
{
    position++;
    Console.Write(position.ToString() + " " + player.Name);
}

我可以在以后获得list[X],其中X是列表中的玩家编号。

或者有更好的方法吗?

4 个答案:

答案 0 :(得分:3)

List将按照添加到列表中的顺序输出元素。如果您使用.net 3.0+,则可以在打印输出之前执行.OrderBy(r=> r.Foo)以保证订单。如果你要在循环中增加一个计数器,我建议使用经典的for循环而不是foreach

for(int pos =0; pos<list.count; ++pos) {
  Console.Write(pos.ToString() + " " + list[pos].Name);
}

答案 1 :(得分:1)

对于列表,使用foreach将始终按列表的原始顺序输出。

答案 2 :(得分:1)

你有什么作品。 List是一个有序的集合,它的枚举器也是订购的。这是一个很好的问题,因为并非所有集合都有排序的概念,例如词典

答案 3 :(得分:0)

如果通过订购,你的意思是按照它在集合中的顺序,你的foreach正是我将如何做到的。但是,如果您需要更改顺序,那么您可能会考虑使用LINQ,尤其是如果您可能希望按plyer类的不同属性进行排序。