什么时候配置?

Ann*_*son 8 .net c# idisposable using-statement

我对所有关于IDispose和"使用"语句的讨论感到困惑.我想知道是否有人可以告诉我是否需要在以下测试示例中使用"using"语句或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;
    }

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 21

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

现在,如果您更改了类以打开文件,并维护一个FileStream引用打开文件句柄的字段,那么实现IDisposable关闭流是有意义的.

  • @Walkerneo:`using`语句相当于`try` /`finally`块,它位于`finally`中. (5认同)

Tig*_*ran 7

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


Chu*_*ris 6

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

using(StreamReader sreader=new StreamReader())
{
//your code
}
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,使用语句将帮助您不要考虑手动处理/关闭对象/