C# - Streams是否应该始终关闭,即使它们没有正常打开?

时间:2013-11-15 13:39:21

标签: c# stream visual-studio-2013 dispose

如果我使用Stream对象打开带有OpenFileDialog的文本文件,我应该在什么范围内关闭它?在我声明它的同一范围内,或者在if之一内(仅在正确打开的情况下关闭它)?。

我在这里留下代码,所以你可以告诉我......

Stream arch_Usuarios;

OpenFileDialog openFileDialog_arch_Usuarios = new OpenFileDialog();

if (openFileDialog_arch_Usuarios.ShowDialog() == DialogResult.OK)
{
    if ((arch_Usuarios = openFileDialog_arch_Usuarios.OpenFile()) != null)
    {
        ...
    }
}

问候。

1 个答案:

答案 0 :(得分:6)

如果您将这些资源放在using语句中,则无需担心。这些对象在超出范围时会自动清除,无论代码如何退出,即使抛出异常也是如此。

using(OpenFileDialog openFileDialog_arch_Usuarios = new OpenFileDialog())
{
    if (openFileDialog_arch_Usuarios.ShowDialog() == DialogResult.OK)
    {
        using(Stream arch_Usuarios = openFileDialog_arch_Usuarios.OpenFile())
        {
            ...
        }        
    }
}

这是我对using陈述的一个宠儿。你结束了可笑的缩进代码。轻微的抱怨,但仍然让我很烦。