我对所有关于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;
}
}
答案 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。