初始化ObservableCollection的长度<t>初始化List的方式<t> </t> </t>

时间:2014-04-14 20:01:35

标签: c# list observablecollection

有没有办法像ObservableCollection<T>一样初始化List<T>的容量?

例如:

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

2 个答案:

答案 0 :(得分:7)

不,没有。 ObservableCollection<T>的{​​{3}}需要List<T>,因此您可能认为可以这样做:

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

但这不起作用。在内部,ObservableCollection复制列表,不考虑列表中的任何容量属性。您可以使用One of the constructors查看构造函数来验证这一点。

答案 1 :(得分:0)

这是一个古老的问题。但是,我认为可能值得知道,当前,可以将后备列表容量设置为依赖内部实现的风险。

基类Collection<T>公开的Items属性当前实现为List<T>。使用类型转换,可以设置该属性的“容量”。

请注意,这确实依赖于List<T>ObservableCollection<T>类的当前实现。如果能够设置后备容量至关重要,而不必担心.NET实现会发生变化(例如,将后备列表更改为Dictionary或HashSet),则应该创建一个新类来实现所需的接口

您可以同时使用Microsoft Reference Source.NET Reflector