C# 为非关联对象执行CollectionChanged事件
我有两个ObservableCollection对象,obj1已附加到集合更改事件。Obj1有一个从obj2到Obj1=obj2的值。当我在obj2上添加任何项时,它将执行对象1的集合更改事件。我不明白为什么会这样C# 为非关联对象执行CollectionChanged事件,c#,C#,我有两个ObservableCollection对象,obj1已附加到集合更改事件。Obj1有一个从obj2到Obj1=obj2的值。当我在obj2上添加任何项时,它将执行对象1的集合更改事件。我不明白为什么会这样 您只有一个ObservableCollection,因为您通过分配obj2的引用来覆盖变量obj1的引用 您的代码: obj1 = obj2; 从那时起,两个变量都指向同一个可观测集合。在该赋值之后,如果使用变量obj1或obj2调用方法或注册ObservableCollectio
您只有一个ObservableCollection,因为您通过分配
obj2
的引用来覆盖变量obj1
的引用
您的代码:
obj1 = obj2;
从那时起,两个变量都指向同一个可观测集合。在该赋值之后,如果使用变量
obj1
或obj2
调用方法或注册ObservableCollection上的事件,则情况相同。您只有一个ObservableCollection,因为您通过分配obj2
的引用来覆盖变量obj1
的引用
obj1 = new ObservableCollection(obj2);
您的代码:
obj1 = obj2;
从那时起,两个变量都指向同一个可观测集合。在该赋值之后,如果使用变量
obj1
或obj2
调用方法或注册observeCollection上的事件,则情况相同。obj1和obj2引用同一对象。上面的代码在内存中创建了两个对象,但是
obj1 = obj2;
obj1 = new ObservableCollection(obj2);
将obj1的参照更改为obj2参照的对象。
这意味着CollectionChanged事件在obj1和obj2引用的对象上注册。obj1和obj2引用同一对象。上面的代码在内存中创建了两个对象,但是
obj1 = obj2;
将obj1的参照更改为obj2参照的对象。
这意味着CollectionChanged事件已在obj1和obj2引用的对象上注册。
obj1=obj2
不会在obj1中为您提供obj2的副本。这一行表示“obj1请指向与obj2相同的ObservableCollection”。之前连接到obj1的ObservableCollection将被销毁,之后两个变量都指向同一个对象
如果需要副本,请创建一个新的ObservableCollection并填写另一个集合
obj1 = new ObservableCollection(obj2);
obj1=obj2
不会在obj1中提供obj2的副本。这一行表示“obj1请指向与obj2相同的ObservableCollection”。之前连接到obj1的ObservableCollection将被销毁,之后两个变量都指向同一个对象
如果需要副本,请创建一个新的ObservableCollection并填写另一个集合
obj1 = new ObservableCollection(obj2);