試圖瞭解何時需要執行IDisposable:當所有成員被明確處置時,一個類是否需要實現IDisposable?
我寫了一個小例子。
public class FileManager
{
private FileStream fileStream;
public void OpenFile(string path)
{
this.fileStream = File.Open(path, FileMode.Open, FileAccess.Read);
}
public void CloseFile(string path)
{
if (this.fileStream != null && this.fileStream.CanRead)
{
this.fileStream.Close();
}
this.fileStream.Dispose();
}
}
// client
var manager = new FileManager();
manager.Open("path");
manager.Close("path");
請問這個類必須實現IDisposable因爲它有一個管理資源(的FileStream)持有到一個非託管資源(文件)?或者我不必實施IDisposable,因爲我正在課堂內清理?
困惑。
http://stackoverflow.com/q/1136210/284240 –
當調用'manager.Close'之前拋出異常時會發生什麼? – hvd
如果有疑問,請運行FxCop - 它會檢測並說明Dispose何時何地需要執行。 –