2014-04-14 47 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