gpt4 book ai didi

c# - 为什么 NotifyCollectionChangedEventArgs 有 NewItems 和 OldItems 作为复数?

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:52 26 4
gpt4 key购买 nike

我是 C# 和 OOP 的新手,只是一个关于 NotifyCollectionChangedEventArgs 的问题。我不明白为什么它有 NewItems 和 OldItems 而不是 NewItemOldItem。例如,我们将 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 定义的接口(interface),由 ObservableCollection 实现.

虽然 ObservableCollection 没有一次添加多个项目的方法,但它确实有一个 ClearItems方法,它可以一次删除多个项目。这是我能想到使用复数名称的原因之一,因为它们可以包含多个项目。

此外,由于它是一个接口(interface),它可以由其他实现类似 AddRangeRemoveWhere 等方法的类实现,这将再次引发此事件有多个项目。

关于c# - 为什么 NotifyCollectionChangedEventArgs 有 NewItems 和 OldItems 作为复数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com