Je me demande s'il est nécessaire de vérifier l' NotifyCollectionChangedAction
enum du NotifyCollectionChangedEventArgs
, lors de la souscription à l'événement CollectionChanged
. Chaque exemple, je suis tombé sur-t-il comme ceci:Est-il nécessaire de vérifier NotifyCollectionChangedAction dans un événement CollectionChanged?
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);
}
}
// ...
};
Est-il possible d'ignorer la NotifyCollectionChangedAction
et simplifier tout le code comme ceci:
myCollection.CollectionChanged += (sender, eventArgs) =>
{
eventArgs.NewItems?.OfType<SampleClass>()
.ToList()
.ForEach(addAction);
eventArgs.OldItems?.OfType<SampleClass>()
.ToList()
.ForEach(removeAction);
};
Quels sont les inconvénients de cette idée? Y a-t-il quelque chose que j'ai manqué?
Dans mon cas d'utilisation, il est juste nécessaire de traiter les éléments nouveaux et anciens. Le déplacement n'a pas d'importance. Si vous déclenchez par ex. l'action 'replace', je traite l'ancien et le nouvel élément avec mon code simplifié. – WoIIe
@Wolle Vous dites que le déplacement n'a pas d'importance, mais vous codez d'abord addAction puis removeAction pour l'élément déplacé, je doute que ce soit ce que vous avez l'intention de faire dans ce cas (vous préférez l'ignorer si cela n'a pas d'importance). – Evk