我是C#和OOP的新手,只是一个关于NotifyCollectionChangedEventArgs
的问题。我不明白为什么它有NewItems和OldItems而不是NewItem
和OldItem
。
例如,我们将ObservableCollection用作:
ObservableCollection<Person> people = new ObservableCollection<Person>()
// Wire up the CollectionChanged event.
people.CollectionChanged += people_CollectionChanged;
static void people_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (Person p in e.NewItems)
{
Console.WriteLine(p.ToString());
}
}
}
因此,每次我们在集合中添加新的
Person
为:people.Add(new Person("John", "Smith", 32));
CollectionChanged
触发people_CollectionChanged
,所以e.NewItems
只包含一个人(我刚刚添加的那个人),因此假设e.NewItems
可以有多个项目,因为它总是只能有一个项目,这有什么意义呢? 最佳答案
您要订阅的事件实际上是由INotifyCollectionChanged
接口定义的,并由ObservableCollection
实现的。
虽然ObservableCollection
没有一次添加多个项目的方法,但它确实有一个ClearItems
方法,该方法可以一次删除多个项目。这是我想到复数名称的原因之一,因为它们可以包含多个项目。
而且,由于它是一个接口,因此可以由其他类实现,这些类确实实现了诸如AddRange
或RemoveWhere
等方法,这些方法将再次引发具有多个项目的事件。
关于c# - 为什么NotifyCollectionChangedEventArgs的NewItems和OldItems为复数形式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56354106/