我有一个项目列表,并将其复制到一个集合中.如果列表发生任何更改,它应该自动反映在集合中
本文关键字:列表 集合 任何更 如果 一个 项目 有一个 复制 | 更新日期: 2023-09-27 17:53:28
My Project is
步骤1:创建一个c#控制台应用程序,它应该创建一个String类型的列表,并添加item1, item2和item3。
步骤2:创建一个String类型的Collection并复制这些项目。
步骤3:如果在List对象中发生任何更改,它应该反映在Collection对象中。
我成功地完成了第2步,我的代码是
class Program
{
static void Main(string[] args)
{
List<string> newList = new List<string>();
newList.Add("Item 1");
newList.Add("Item 2");
newList.Add("Item 3");
Collection<string> newColl = new Collection<string>();
foreach (string item in newList)
{
newColl.Add(item);
}
Console.WriteLine("The items in the collection are");
foreach (string item in newColl)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
现在,如果列表发生了变化,它将如何反映在集合对象?
尝试使用ObservableCollection代替List<string>
并订阅事件CollectionChanged
。这是一个很简单的实现,只是给大家一个大概的概念。您应该添加参数检查或执行其他类型的同步,因为您没有说明如何准确地在Collection
ObservableCollection<string> newList = new ObservableCollection<string>();
newList.Add("Item 1");
newList.Add("Item 2");
newList.Add("Item 3");
Collection<string> newColl = new Collection<string>();
newList.CollectionChanged += (sender, args) =>
{
foreach (var newItem in args.NewItems)
{
newColl.Add(newItem);
}
foreach (var removedItem in args.OldItems)
{
newColl.Remove(removedItem);
}
};