- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 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
定义的接口(interface),由 ObservableCollection
实现.
虽然 ObservableCollection
没有一次添加多个项目的方法,但它确实有一个 ClearItems
方法,它可以一次删除多个项目。这是我能想到使用复数名称的原因之一,因为它们可以包含多个项目。
此外,由于它是一个接口(interface),它可以由其他实现类似 AddRange
或 RemoveWhere
等方法的类实现,这将再次引发此事件有多个项目。
关于c# - 为什么 NotifyCollectionChangedEventArgs 有 NewItems 和 OldItems 作为复数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354106/
我有一个 ObservableCollection 并附加到 CollectionChanged 事件: void OnCollectionChanged(object sender, NotifyC
这里有一些东西确实让我措手不及。 我有一个 T 的 ObservableCollection,其中充满了项目。我还有一个附加到 CollectionChanged 事件的事件处理程序。 当您清除集合时
我是 C# 和 OOP 的新手,只是一个关于 NotifyCollectionChangedEventArgs 的问题。我不明白为什么它有 NewItems 和 OldItems 而不是 NewIte
我在使用 DiffUtil.ItemCallback 库时遇到问题,其中列表项的旧状态最终会丢失并导致 oldTask 具有相同的值作为newTask。 当我选中/取消选中 ListAdapter 中
仅供引用,我并不是在寻找“修复”,而是在寻找解释和讨论,这可能有助于更多地理解像这些看似愚蠢的事情是如何工作的。 当我意识到某个地方的某个列表没有正确更新时,我正在从事这个更大的项目。仔细观察,项目正
我是一名优秀的程序员,十分优秀!