C# 集合总是强制执行顺序吗?

发布于 2024-11-29 16:33:23 字数 474 浏览 0 评论 0原文

IE 如果我想从数组中进行选择,生成的 IEnumerable对象是否一定按顺序排列?

public class Student { public string FullName, ... }
public class School { public string Name, public Student[] Students, ... }

public void StudentListWork(School thisSchool)
{
    IEnumerable<string> StudentNames = thisSchool.Students.Select(student => student.FullName);

    // IS StudentNames GUARANTEED TO BE IN THE SAME ORDER AS thisSchool.Students?
}

谢谢!

I.E. If I want to select from an array, is the resultant IEnumerable<object> object necessarily in order?

public class Student { public string FullName, ... }
public class School { public string Name, public Student[] Students, ... }

public void StudentListWork(School thisSchool)
{
    IEnumerable<string> StudentNames = thisSchool.Students.Select(student => student.FullName);

    // IS StudentNames GUARANTEED TO BE IN THE SAME ORDER AS thisSchool.Students?
}

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

堇年纸鸢 2024-12-06 16:33:23

是的,在这种情况下:

  • 数组按自然顺序返回项目
  • Enumerable.Select 按原始序列的顺序返回项目(当然是在投影之后),

但是有些集合保留顺序。特别是:

  • HashSetDictionary 等集合不保证返回值的
  • 顺序T> 和 SortedDictionary 根据放置在其中的项目应用保证排序

Yes, in this case:

  • Arrays returns items in the natural order
  • Enumerable.Select returns items in the order of the original sequence (after projection, of course)

Some collections do not retain order, however. In particular:

  • Collections such as HashSet<T> and Dictionary<TKey, TValue> make no guarantees about the order in which values are returned
  • Collections such as SortedSet<T> and SortedDictionary<TKey, TValue> apply guaranteed ordering based on the items placed within them
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文