在Last中取消对象是不是很糟糕?

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吗?

什么是最佳做法?

kem*_*002 8

将对象设置为null不会执行任何操作,因为它将超出范围.因此,简短的答案是肯定的,这很糟糕.你添加的代码没有增加任何价值,而且最终会成为其他程序员必须阅读的内容,最好只删除.它也可能会让其他程序员对你为什么这么做感到困惑.

在您的示例中,您还扩展了对象的范围,因此您可以在finally块中将其清空.理想情况下,您应该在try块中声明它,并让它超出范围.