“使用”块通常是这样写的:
using (new Foo()) { ... }
而不是像这样:
using (var f = new Foo()) { ... }
在第一种情况下,没有设置对新Foo对象的显式引用,是否存在在块结束之前可以处置对象的危险?如果没有,为什么不呢?
答案 0 :(得分:14)
没有危险会及早处理。
第一个示例仍然创建对创建的对象的显式引用。该引用只是未命名,不能在您的代码中使用。
using
块将保留引用(尽管未命名),直到块结束。
答案 1 :(得分:3)
除非您需要使用范围块访问对象,否则不需要设置显式引用。没有被引用的变量被提前处理的危险,因为它只在它超出范围时被处理掉。