创建新对象然后重新分配

时间:2011-02-09 03:54:18

标签: c# new-operator

基于To "new" or not to "new"

的问题
Foo object1 = new Foo();
// some operations later ...
object1 = new Foo();

我试图做的是可取的吗?如果Foo实现了Idispoable,我是否需要在第二次调用new运算符之前调用dispose?

2 个答案:

答案 0 :(得分:3)

是的,你在这个例子中做的很好。

object1 变量只是对Foo类型对象的引用。在第一次new分配后,它引用Foo的一个特定实例;在第二个new赋值之后,它引用了一个完全不同的实例(并且原始实例有资格进行垃圾收集,假设没有其他任何引用它)。

是的,如果Foo实现了IDisposable,那么你应该优先处理它,最好是使用using块,尽管我的个人偏好是使用单独的using变量每个街区:

using (Foo first = new Foo())
{
    // do something
}

using (Foo second = new Foo())
{
    // do something else
}

答案 1 :(得分:1)

通常,如果一个类实现IDisposable,那么建议确保调用Dispose()。这几乎总是正确的事情。