首页 新闻 会员 周边 捐助

关于using(){}

0
悬赏园豆:50 [已解决问题] 解决于 2012-11-03 20:40

using(DataTable dt = ***)
{
  Cache["**"] = dt;
}

执行完后 Cache["**"]指向的 dt 还存不存在??
或者说 再次掉用 Cache["**"] 能否获取到 dt数据

生活是平淡的的主页 生活是平淡的 | 初学一级 | 园豆:71
提问于:2012-09-29 17:36
< >
分享
最佳答案
0

执行完后 Cache["**"]指向的 dt 还存不存在??   (cache指向的内存存放的数据还在)
或者说 再次掉用 Cache["**"] 能否获取到 dt数据   完全可以

收获园豆:50
chenping2008 | 大侠五级 |园豆:9836 | 2012-09-29 21:26
其他回答(5)
0

{
  Cache["**"] = dt;

//这里dt还存在
}

//这里dt不存在了

田林九村 | 园豆:2367 (老鸟四级) | 2012-09-29 17:45

如果再次 DataTable dt2 = (DataTable)Cache["**"]

 

dt2 能获取到数据么?

支持(0) 反对(0) 生活是平淡的 | 园豆:71 (初学一级) | 2012-09-29 17:50

@生活是平淡的: 可以的,cache是保存到整个应用程序域中的

支持(0) 反对(0) 田林九村 | 园豆:2367 (老鸟四级) | 2012-09-29 17:51
0

可以的,cache是保存到整个应用程序域中的

jason2013 | 园豆:1998 (小虾三级) | 2012-09-29 22:56
0

using() {

// 作用域内生效

string a = "a";

}

// 失效
a;

Y2zz | 园豆:393 (菜鸟二级) | 2012-09-29 23:05
0

dt虽然存在Cache里面,但是已经被销毁了,因为离开了using作用域的dt,被默认执行过了Dispose方法,内部被释放了,不可再使用。

秦楼东 | 园豆:913 (小虾三级) | 2012-09-30 11:12
0

dt是不存在的,已经被释放掉了,但是数据已经放到Cache中了,Cache被存放在整个应用程序域中,所以仍然可以使用dt中的数据。

轻狂の书生 | 园豆:1042 (小虾三级) | 2012-10-03 10:34

想知道这个数据是已经被GC回收了,还是只是标记可以回收.cache中使用到了这里是复制了一个对象还是只是指向了原来的datetable 地址

支持(1) 反对(0) xu.c | 园豆:298 (菜鸟二级) | 2012-10-09 12:01

@xuchengzone: 在using外,dt对象已经被释放了

支持(0) 反对(0) 轻狂の书生 | 园豆:1042 (小虾三级) | 2012-10-09 14:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册