我如何处理这个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();
}
}
我正在寻找有关如何以及何时实施配置模式的建议。 还有其他选择吗?
答案 0 :(得分:-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 :(得分:-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))
{
...
}
}