C# 我有一个项目列表,并已将其复制到一个集合中。如果列表发生任何更改,它将自动反映在集合中

C# 我有一个项目列表,并已将其复制到一个集合中。如果列表发生任何更改,它将自动反映在集合中,c#,.net,visual-studio-2008,C#,.net,Visual Studio 2008,我的项目是 步骤1:创建一个C#控制台应用程序,该应用程序应创建一个字符串类型列表,并添加item1、Item2和Item3 步骤2:创建String类型的集合并复制这些项 步骤3:如果列表对象中发生任何更改,它应该反映在集合对象中 我成功地完成了第二步,我的代码是 class Program { static void Main(string[] args) { List<string> newList = new L

我的项目是

步骤1:创建一个C#控制台应用程序,该应用程序应创建一个字符串类型列表,并添加item1、Item2和Item3

步骤2:创建String类型的集合并复制这些项

步骤3:如果列表对象中发生任何更改,它应该反映在集合对象中

我成功地完成了第二步,我的代码是

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();
        }
    }
类程序
{
静态void Main(字符串[]参数)
{
List newList=新列表();
新增列表。添加(“第1项”);
新增清单。添加(“第2项”);
新增列表。添加(“第3项”);
Collection newColl=新集合();
foreach(newList中的字符串项)
{
新增(项目);
}
Console.WriteLine(“集合中的项目是”);
foreach(newColl中的字符串项)
{
控制台写入线(项目);
}
Console.ReadKey();
}
}
现在,如果列表中发生更改,它将如何反映在集合对象中?

尝试使用而不是
list
并订阅事件
CollectionChanged
。这是一个非常幼稚的实现,只是为了给出一个大概的想法。您应该添加参数检查或执行其他类型的同步,因为您没有说明更改应该如何准确地反映在
集合上

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);
            }
        };
observetecollection newList=newobservetecollection();
新增列表。添加(“第1项”);
新增清单。添加(“第2项”);
新增列表。添加(“第3项”);
Collection newColl=新集合();
newList.CollectionChanged+=(发件人,参数)=>
{
foreach(args.NewItems中的var newItem)
{
新增项目(新增项目);
}
foreach(args.OldItems中的var removedItem)
{
新Coll.移除(移除项);
}
};

你的问题有点含糊。你的意思是,如果将
newList
中的“Item 3”更改为“Item 4”会发生什么?例如,它说“如果列表对象中发生任何更改,它应该反映在集合对象中。”因此,这意味着如果我将Item 3更改为Item 4,它也应该在集合中更改@DanielKelley