有没有办法像ObservableCollection<T>
一样初始化List<T>
的容量?
例如:
var observableCollection = new ObservableCollection<int>(100);
答案 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),则应该创建一个新类来实现所需的接口