BackGroundWorker bw; private void Func() { for() { bw=new BackGroundWorker(); } }
这些new出来的对象都在堆上开辟内存空间吗?修改一个对象,会对其他的有影响吗?自己又把自己绕进去了
比如说bw.CancelAsync(); 会对这些实例化的对象有什么影响
bw是一个BackGroundWorker类型的变量,bw=new BackGroundWorker()是变量bw指向new出来的这个BackGroundWorker对象,for(){...}中变量bw指向最后一个new出来的BackGroundWorker对象,bw.CancelAsync()是调用变量bw指向的BackGroundWorker对象的方法,和其他对象无关
引用楼上一句话"bw指向最后一个new出来的BackGroundWorker对象", 你在for循环外面, 调用bw的一些方法时, 这时候操作的是最后一个new出来的BackGroundWorker对象, 与前边 new 出来的对象无关. 前边 new 出来的对象, 由于没有变量指向它了, 也无法操作这些对象了, 过一段时间会被垃圾回收器回收.
每次new都会有一个新对象,bw变量保存对象的地址。这反复吧新对象的地址复制给bw而已。你说会不会影响?