以下两个片段之间是否有任何性能差异?
IEnumerable<object> enumerable = ...
var observableCollection = new ObservableCollection<object>(enumerable.ToList());
Run Code Online (Sandbox Code Playgroud)
IEnumerable<object> enumerable = ...
var observableCollection = new ObservableCollection<object>();
foreach (object o in enumerable)
{
observableCollection.Add(o);
}
Run Code Online (Sandbox Code Playgroud)
是的,有性能差异.第二种方法将为CollectionChanged列表中的每个项目引发事件.首先不会.
如果您未在创建集合和添加项目之间订阅事件,则可能会忽略此项.
如果objOCollection在添加项目之前将其分配给UI,则可能导致UI在添加项目时执行不佳,因为必须为每个更改刷新.完整地创建集合(无论是通过构造函数还是添加项目)然后将其分配给UI将避免这种情况.
如果您正在订阅该CollectionChanged事件并希望对每个项目做出反应,那么您将无法使用第一种方法执行此操作.