2010-02-02 32 views
1

我可能不太喜歡IOrderedEnumerable<T>系列。IOrderedEnumerable <T>是一個固有的不可變集合嗎?我應該/可以屈服嗎?

如果我有一個字段,my_field類型IOrderedEnumerable<T>,並且我希望從公共屬性獲取器返回它,我可以簡單地return my_field;?我已經習慣了yield ING結果的IEnumerable<T>防止外部修改內部舉行的集合,但似乎這可能不是必要的或可能甚至是不可能在IOrderedEnumerable<T>的情況。

是嗎?

所以我不能以任意順序聲明的IOrderedEnumerable<T>yield結果的返回類型,使得順序是由代碼而不是IComparable<T>個基於屬性的比較的結構定義?是否遵循TIOrderedEnumerable<T>必須始終執行IComparable<T>

是否有實現這個接口的.NET API的類,還是類型只有在運行時通過使用LINQ擴展獲取生成?

回答

2

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

它只是由System.Linq的內部OrderedEnumerable類實現,它也是不可變的。