什么时候配置?

时间:2012-03-19 20:19:18

标签: c# .net idisposable using-statement

我对所有关于IDispose和“使用”语句的讨论感到困惑。我想知道是否有人可以告诉我是否需要在以下测试示例中使用“使用”语句或某种IDispose实现...

public class Main()
{
    MyFile myFile = new MyFile("c:\subdir\subdir2\testFile.txt");
    Console.Writeline("File Name: " + myFile.FileName() + "File Size: " + myFile.FileSize());
}

public class MyFile
{
    private FileInfo _fInfo;

    public MyFile(string fullFilePath)
    {
        _fInfo = new FileInfo(fullFilePath);
    }

    public string FileName()
    {
        return _fInfo.Name;
    }

    public long FileSize()
    {
        return _fInfo.Length;
    }

}

4 个答案:

答案 0 :(得分:21)

不,您的示例不使用任何需要处理的资源(它不会触及任何实现IDisposable的任何资源,或者对非托管资源有任何直接句柄),因此您不需要实现{{ 1}}。

现在,如果您将类更改为 open 该文件,并维护一个引用打开文件句柄的IDisposable字段,那么然后就可以了实现FileStream以关闭流。

答案 1 :(得分:7)

不,在提供的代码中,我没有看到任何必须处理的资源。所以答案是 no ,不要在这段代码中使用它。

答案 2 :(得分:6)

在你的例子中没有什么可以处理的,所以你没有必要这样做 如果你想在文件中读/写,你可以使用Streamreader / Streamwriter,这样你就需要在使用它们之后处理它们。

using(StreamReader sreader=new StreamReader())
{
//your code
}

因此,在这种情况下,使用声明将帮助您不要认为关于手动处理/关闭对象/

答案 3 :(得分:4)

在您的代码中,不需要任何Dispose / using - 有关IDisposable的明确指南,请参阅here