Kas*_*tha 0 c# oop exception-handling
我已经看到开发人员在他们编写的几乎所有方法中都尝试,捕获并最终消除了他们在Finally块中创建的对象.
例如-
public void Demo()
{
Something s = null;
try
{
s = new Something();
}
catch (Exception ex)
{
throw;
}
finally
{
s = null;
}
}
Run Code Online (Sandbox Code Playgroud)
这样做有什么用吗?建议这样做是为了使对象无效,因此GC可以收集它们.
如果不这样做,我们可以使用" 使用 "或IDisposable吗?
什么是最佳做法?
将对象设置为null不会执行任何操作,因为它将超出范围.因此,简短的答案是肯定的,这很糟糕.你添加的代码没有增加任何价值,而且最终会成为其他程序员必须阅读的内容,最好只删除.它也可能会让其他程序员对你为什么这么做感到困惑.
在您的示例中,您还扩展了对象的范围,因此您可以在finally块中将其清空.理想情况下,您应该在try块中声明它,并让它超出范围.