我有一个返回资源类实例的方法,如何使用“ using”语句避免资源泄漏?
public boolean freeWayL(int xO, int yO, int xD, int yD) {
boolean fH, fV;
//Horizontal -> Vertical
fH = this.freeWayHorizontally(xO, yO, xD);
if (fH) {
fV = this.freeWayVertically(xD, yO, yD);
if (fV) {
return true;
}
}
//Vertical -> Horizontal
fV = this.freeWayVertically(xO, yO, yD);
if (dV) {
fH = this.freeWayHorizontally(xO, yD, xD);
if (fH) {
return true;
}
}
return false;
}
我希望我的问题清楚。 预先感谢
答案 0 :(得分:2)
您可以通过在资源的整个使用范围内声明using块来释放将其分配给调用方的责任
public ResourceClass method()
{
return new ResourceClass();
}
然后
using(var s = method())
{
//do something with s
}
答案 1 :(得分:1)
这就像使用method
方法在您的using
语句中创建实例一样简单:
public void YourMethod()
{
using (ResourceClass Foo = method())
{
...
}
}
这当然只有在ResourceClass
实现IDisposable
的情况下才有效。否则,您的程序将无法编译。