public class Photo : IDisposable { //在Finalize函数中调用内部的Dispose方法 ~Photo() { //被自动回收时仅释放托管资源,不释放非托管资源 Dispose(false); } //提供了自命名的释放资源方法 public void Close() { //当显式回收时则释放所有资源 Dispose(true); } #region IDisposable接口显式实现 //显式实现IDisposable接口,避免同时出现Dispose方法和自定义命名方法(Close) public void IDisposable.Dispose() { //释放所有资源 Dispose(true); //避免重复调用Finalize函数 GC.SuppressFinalize(this); } #endregion //内部的Dispose方法,真正实施资源释放工作 protected virtual void Dispose(bool disposing) { if(disposing==true) { //释放托管资源 } //释放非托管资源 } }