在我的代碼,我有以下兩個集合:我意外地綁定了兩個可觀察的集合嗎?
private ObservableCollection<Job> listOfJobs1 = new ObservableCollection<Job>();
private ObservableCollection<Job> listOfJobs2 = new ObservableCollection<Job>();
昨天我試圖填充listOfJobs2從listOfJobs1的對象,我做到了像...
listOfJobs2 = listOfJobs1;
我注意到,雖然我對listOfJobs1所做的任何修改然後反映在listOfJobs2,甚至代碼很好的路線。
這是'='等同於以某種方式綁定集合,以便他們彼此觀察?
唯一原因,我問的是,因爲這個問題是通過使用在listOfJobs1一個foreach和編程方式使用添加增加listOfJobs2()來解決。如果我是對的,填充集合的兩種方式是不同的,有人能指出我正確的方向來解釋這種工作方式的文章,因爲我現在要編寫一種方法,這將非常依賴於這是這樣的。另外,如果我使用列表<>,情況會是這樣嗎?
它看起來像=運營商正在做一個淺拷貝(見http://weblogs.asp.net/varad/archive/2004/09/13/229182.aspx)也檢查了這一點,因爲它可能會回答你第二個問題,解決方案。 http://stackoverflow.com/questions/2314496/c-sharp-list-member-needs-deep-copy –
你所做的只是改變一個參考,這對於幾乎任何編程語言都很重要,你需要意識到存在一個區分參考名稱和創建新實例,在您的示例中,您簡單地將兩個引用都更改爲指向同一實例,原始第二個列表從未隨後更新,並且很可能已收集垃圾 – meandmycode
另請參閱:http:/ /msdn.microsoft.com/en-us/library/system.object.memberwiseclone.aspx –