【问题标题】:Does List<>.OrderBy() check if the list is sorted?List<>.OrderBy() 是否检查列表是否已排序?
【发布时间】:2015-03-08 15:52:01
【问题描述】:

在我正在开发的游戏中,我需要对对象列表进行排序,以确定它们的渲染顺序。我需要每帧对列表进行排序,即每秒 60 次。然而,列表很可能已经按顺序排列,除了开始后游戏的第一帧。

所以我的问题是 List 的 OrderBy 方法是否在使用它用来排序的任何算法之前检查列表是否已经排序?由于大多数情况下我的列表都会被排序,因此无论如何使用它都是浪费时间。

【问题讨论】:

  • 你可以使用堆栈吗?如果您知道要添加最后一个元素,则可以使用堆栈来首先返回最后添加的元素。这样你仍然可以使用你的 List 以及

标签: c# list sorting


【解决方案1】:

不是List&lt;T&gt;.OrderBy,而是Enumerable.OrderBy,不,它不检查列表是否已经排序。您可以查看源代码here,如果您想始终保持列表排序,建议您改用SortedListSortedList&lt;TKey,TValue&gt;

【讨论】:

  • 我不知道排序后的列表是否合适。我需要一直对其进行排序的原因是元素本身会发生变化,因此可能在逐帧列表中的不同位置(列表按游戏世界中对象的 Y 值排序,其中物体移动时发生变化)。也许我应该只用我自己的方式来检查我是否需要排序?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2011-04-14
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2012-04-08
相关资源
最近更新 更多