我正在寻找有关如何以及何时实施配置模式的建议。还有其他选择吗?

问题描述 投票:-1回答:2

我如何处理这个iv实例?

 public IslemVekil GirisYap(KisiGirisModel _kgm)
    {
        IslemVekil iv = new IslemVekil();

        using (KisiVekil kv = new KisiVekil())
        {
            iv = IslemVekilGetir(kv);
        }

        return iv;
    }

我的解决方法是:

 private IslemVekil GirisYap(KisiGirisModel _kgm)
    {
        IslemVekil iv = new IslemVekil();

        try
        {
            iv = IslemVekilGetir(kv);
            return iv;
        }
        finally
        {
            iv.Dispose();
        }
    }

我正在寻找有关如何以及何时实施配置模式的建议。还有其他选择吗?

c# asp.net model-view-controller dispose destroy
2个回答
-1
投票

你可以做这样的嵌套使用:

public IslemVekil GirisYap(KisiGirisModel _kgm)
{
    using (IslemVekil iv = new IslemVekil()) // first using
    using (KisiVekil kv = new KisiVekil()) // second using
    {
        iv = IslemVekilGetir(kv);
        return iv; // return here, because outside of this block 'iv' will be disposed
    }

    // return iv; - This is disposed and cannot be used
}

无论如何,在你返回iv后,它将无法工作,因为它将再次处理。

所以你应该在调用代码中添加using语句而不是这个:

// ... calling code ... //
using (IslemVekil result = GirisYap(_kgm))
{
    // Do something with your 'iv' here
    result.DoSomethingFancy();
    ActUpon(result);
}
// Here your 'iv' is disposed

-1
投票

您的代码似乎不正确。您正在为iv变量赋值,然后在using block中为其重新分配另一个值。如果IslemVekil是一个IDisposable,那么你的方法中就会有内存泄漏。请考虑一下:

public IslemVekil GirisYap(KisiGirisModel _kgm)
    {
        IslemVekil iv;

        using (KisiVekil kv = new KisiVekil())
        {
            iv = IslemVekilGetir(kv);
        }

        return iv;
    }

public void Test(KisiGirisModel _kgm)
    {

        using (IslemVekil iv = GirisYap(_kgm))
        {
            ...
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.