2011-04-02 82 views

回答

1
public static ReadOnlyCollection<T> AsReadOnlyCollection<T>(this IEnumerable<T> source) 
{ 
    if(source == null) 
     throw new ArgumentNulLException("source"); 

    IList<T> list = source as IList<T> ?? source.ToList(); 
    return new ReadOnlyCollection<T>(list); 
} 

注意,有在這種情況下,「轉換」的IEnumerable<T>(沒有這樣的事就像LINQ堆棧中的所有其他方法一樣),您將返回與以前不同的對象。

+0

'作爲IList的來源 ?? source.ToList();'? – Snowbear 2011-04-02 10:48:55

+0

哦,當然。我通常圍繞着合併操作員,因爲我不是很自然地對我(不是我不理解它)。 – Femaref 2011-04-02 10:50:03

+1

對不起,忘記了方法體中的泛型類型參數。 – Femaref 2011-04-02 11:02:30

6

List<T>已經包含了一個擴展方法AsReadOnly(),所以才這樣做:

queryable.ToList().AsReadOnly() 
相關問題