我想知道在订阅NotifyCollectionChangedEventArgs
的CollectionChanged
事件时,是否需要检查NotifyCollectionChangedAction
枚举。我遇到的每个例子都是这样做的:
myCollection.CollectionChanged += (sender, eventArgs) =>
{
if (eventArgs.Action == NotifyCollectionChangedAction.Add)
{
foreach (SampleClass sampleObject in eventArgs.NewItems)
{
addAction(sampleObject);
}
}
else if (eventArgs.Action == NotifyCollectionChangedAction.Remove)
{
foreach (SampleClass sampleObject in eventArgs.OldItems)
{
removeAction(sampleObject);
}
}
// ...
};
是否可能忽略NotifyCollectionChangedAction
并简化代码,如下所示:
myCollection.CollectionChanged += (sender, eventArgs) =>
{
eventArgs.NewItems?.OfType<SampleClass>()
.ToList()
.ForEach(addAction);
eventArgs.OldItems?.OfType<SampleClass>()
.ToList()
.ForEach(removeAction);
};
这个想法有哪些不足之处?我有没有漏掉什么?