读书人

C#关于方法内使用using的疑惑有关问题

发布时间: 2013-08-01 15:23:18 作者: rapoo

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掉呀?求解读。谢谢 C# using GC 方法
[解决办法]
不会
你已经 return Data;

[解决办法]
从来不用 using,容易误导,也省不了多少代码。
[解决办法]
不影响,using只是说Data这个变量只在{}里面有效,最后return Data;返回了这个data。
[解决办法]
引用:
从来不用 using,容易误导,也省不了多少代码。

我是几乎不用的,没必要
[解决办法]
应该是不能这么用吧。

当离开using的作用域的时候,data就会被自动调用Dispose()方法。
但是此时GC不见得马上就收集了,所以return出去的有一小段时间可以用。
如果GC收集之后,应该就会出现未将对象引用设置到对象实例的错误了。
[解决办法]
同意5楼,不能用using。Dispose调用后,按照微软的设计习惯,通常会将内部的private变量isDisposed设为true,而很多内部属性和方法都会去判断isDisposed是否为true,如果为true的话,就会直接抛异常。

------解决方案--------------------


已经返回了~~
[解决办法]
using只是一个语法糖,它等效大致如下代码:
try
{
DataTable Data = new DataTable();
...
}
finally
{
Data.Dispose();
}

读书人网 >C#

热点推荐