返回资源类的实例

时间:2019-01-02 13:43:30

标签: c#

我有一个返回资源类实例的方法,如何使用“ 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;
}

我希望我的问题清楚。 预先感谢

2 个答案:

答案 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的情况下才有效。否则,您的程序将无法编译。