IOrderedEnumerable <t>是一个固有的不可变集合吗?我应该/可以屈服吗?</t>

时间:2010-02-02 15:35:25

标签: c# .net linq collections

我可能不太关注IOrderedEnumerable<T>集合。

如果我有my_field类型IOrderedEnumerable<T>的字段,并且我希望从公共财产获取者返回,我可以简单地return my_field;吗?我习惯yield将结果IEnumerable<T>发送到IOrderedEnumerable<T>以防止对内部持有的集合进行外部修改,但似乎这可能不是必需的,或者在{的情况下甚至可能不可能。 {1}}。

是吗?

所以我无法以任意顺序声明返回类型IOrderedEnumerable<T>yield结果,这样排序是由代码结构定义的,而不是基于属性的比较IComparable<T> S'是否遵循T中的IOrderedEnumerable<T>必须始终实施IComparable<T>

.NET API中是否有实现此接口的类,或者仅在运行时通过使用LINQ扩展生成类型?

1 个答案:

答案 0 :(得分:2)

您可以安全地返回IOrderedEnumerable<T>;它是不可改变的。

它仅由OrderedEnumerable中的内部System.Linq类实现,该类也是不可变的。