0 c# collections wpf list observablecollection
在我的代码中,我有以下两个集合:
private ObservableCollection<Job> listOfJobs1 = new ObservableCollection<Job>();
private ObservableCollection<Job> listOfJobs2 = new ObservableCollection<Job>();
Run Code Online (Sandbox Code Playgroud)
昨天我试图用listOfJobs1中的对象填充listOfJobs2,我这样做...
listOfJobs2 = listOfJobs1;
我注意到,我对listOfJobs1所做的任何更改都会反映在listOfJobs2中,即使代码也很好.
这是'='相当于以某种方式绑定集合,以便他们相互观察?
我问的唯一原因是因为这个问题是通过在listOfJobs1上使用foreach并使用Add()以编程方式添加到listOfJobs2来解决的.如果我是正确的,并且填充集合的两种方式是不同的,有人可以指出我正确的方向来解释这种方式的工作方式,因为我现在要编写一个方法,这将极大地取决于是否这个是这样的.另外,如果我使用List <>会是这种情况吗?
listOfJobs1和listOfJobs2都是对象的引用(即它们指向对象的存储位置).当你写:
listOfJobs2 = listOfJobs1;
Run Code Online (Sandbox Code Playgroud)
你是说使存储在listOfJobs2中的引用等于存储在listOfJobs1中的引用.换句话说,两个引用都将指向listOfObjects1最初引用的对象.此时,您可以用listOfJobs1替换所有listOfJobs2,并且应用程序的行为相同.
可观察集合都包含对它们包含的内容的引用列表,因此通过在循环中使用Add()将第一个列表中的所有引用添加到第二个列表,您说"嘿,列表 - 保留这些内容的记录我",而将列表1分配给列表2,就像你正在做的那样,"嘿,列表2的引用现在包含列表1",所以你只有那个列表1存储的对象列表.您已完全丢失对作为第二个列表对象的对象的任何引用,并且您不再具有对它的任何访问权限.