C#关于方法内使用using的疑惑问题
本帖最后由 gijquery4 于 2013-07-18 12:08:35 编辑
class A
{
public DataTable Test()
{
using (DataTable Data = new DataTable())
{
//...
//此处对Data进行赋值操作代码...
//...
return Data;
}
}
}
请教以上代码中Test()方法,返回的Data在其他类中使用。会不会因为在Test()方法中使用了using(...){}而影响返回的Data呀?会不会被GC掉呀?求解读。谢谢
------解决方案--------------------不会
你已经 return Data;
------解决方案--------------------从来不用 using,容易误导,也省不了多少代码。
------解决方案--------------------不影响,using只是说Data这个变量只在{}里面有效,最后return Data;返回了这个data。
------解决方案--------------------
我是几乎不用的,没必要
------解决方案--------------------应该是不能这么用吧。
当离开using的作用域的时候,data就会被自动调用Dispose()方法。
但是此时GC不见得马上就收集了,所以return出去的有一小段时间可以用。
如果GC收集之后,应该就会出现
未将对象引用设置到对象实例的错误了。
------解决方案--------------------同意5楼,不能用using。Dispose调用后,按照微软的设计习惯,通常会将内部的private变量isDisposed设为true,而很多内部属性和方法都会去判断isDisposed是否为true,如果为true的话,就会直接抛异常。
------解决方案--------------------