在try或outside try中声明类对象?哪个是最佳做法

Rav*_*hta -1 c# coding-style

在我的代码中,我需要创建FileInfo/StreamWriter类的对象.它可以通过两种方式完成

FileInfo file = null;
try
{
// now instantiate the object
file = new FileInfo()
}
Run Code Online (Sandbox Code Playgroud)

要么

try
{
FileInfo file =  null;
file = new FileInfo()
}
Run Code Online (Sandbox Code Playgroud)

哪一个更好?GC处理对象的方式有什么不同吗?

InB*_*een 5

这取决于.你是否需要进入街区filetry?如果答案是" 不,不是在任何情况下 ",那么在try块内声明它是一个好主意.如果答案是" 是,在我的catchfinally块或代码中的某个地方稍后 ",那么你应该try块之外声明它.

至于你关于性能可能影响的问题,请忘记这个问题.

最后但并非最不重要的是,GC 它没有任何处置.处置和GC两个无关的事情,GC不知道关于一次性物体和IDisposable界面的任何事情.