2014-04-14 46 views
4

是否有任何方法來初始化ObservableCollection<T>的容量,就像你可以使用List<T>初始化ObservableCollection的長度<T>初始化列表的方式<T>

例如:

var observableCollection = new ObservableCollection<int>(100); 
+0

你看過文檔嗎? http://msdn.microsoft.com/en-us/library/ms658737(v=vs.110).aspx –

+1

爲什麼你想這樣做? – tnw

+1

我懷疑'新列表(100)'*沒有做預期的事情 - 它創建了一個帶有初始[*容量*]的列表(http://msdn.microsoft.com/en-us/library /y52x03h2(v=vs.110).aspx)(這很少需要)和* not *「100個默認元素」(這會影響[*長度/ Count *](http://msdn.microsoft.com/ EN-US /庫/ 27b47ht3(v = vs.110)的.aspx))。 – user2864740

回答

6

沒有沒有。 One of the constructorsObservableCollection<T>需要List<T>,所以你可能會認爲你可以這樣做:

new ObservableCollection<int>(new List<int>(100)); 

但是,這並不工作。在內部,ObservableCollection複製列表並且不考慮列表中的任何容量屬性。您可以通過查看使用.NET Reflector的構造函數來驗證這一點。

+0

我看着你建議的構造函數,看到它將初始化內部列表的長度與傳入的列表的長度相同。謝謝。 – declouet

+3

@ user2449323是的,但**這裏傳遞的列表的長度是零,而不是100 **。列表的*容量*爲100,但長度爲零,因爲沒有項目已添加到列表中。 – Servy

+0

我現在看到,你是對的。謝謝。 – declouet