首页 新闻 会员 周边 捐助

关于一个引用类型多次New的问题

0
悬赏园豆:15 [已解决问题] 解决于 2016-01-20 09:28
BackGroundWorker bw;

private void Func()
{
for()
{

bw=new BackGroundWorker();
}

}

这些new出来的对象都在堆上开辟内存空间吗?修改一个对象,会对其他的有影响吗?自己又把自己绕进去了

问题补充:

比如说bw.CancelAsync(); 会对这些实例化的对象有什么影响

SuperRaccoon的主页 SuperRaccoon | 初学一级 | 园豆:18
提问于:2016-01-19 18:57
< >
分享
最佳答案
1

bw是一个BackGroundWorker类型的变量,bw=new BackGroundWorker()是变量bw指向new出来的这个BackGroundWorker对象,for(){...}中变量bw指向最后一个new出来的BackGroundWorker对象,bw.CancelAsync()是调用变量bw指向的BackGroundWorker对象的方法,和其他对象无关

收获园豆:10
jello chen | 大侠五级 |园豆:7336 | 2016-01-19 19:23
其他回答(2)
0

引用楼上一句话"bw指向最后一个new出来的BackGroundWorker对象", 你在for循环外面, 调用bw的一些方法时, 这时候操作的是最后一个new出来的BackGroundWorker对象, 与前边 new 出来的对象无关. 前边 new 出来的对象, 由于没有变量指向它了, 也无法操作这些对象了, 过一段时间会被垃圾回收器回收.

收获园豆:5
蜗牛大师 | 园豆:209 (菜鸟二级) | 2016-01-20 08:17
0

每次new都会有一个新对象,bw变量保存对象的地址。这反复吧新对象的地址复制给bw而已。你说会不会影响?

nike_ha | 园豆:177 (初学一级) | 2016-01-20 09:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册