程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c#內存管理.(9)

c#內存管理.(9)

編輯:關於C語言

IDisposible

使用IDisposable接口的Dispose()方法做清理工作。因此如果我們有一個ResouceUser的類使用到了終結器(finalizer),如下:

public class ResourceUser {
  ~ResourceUser () // THIS IS A FINALIZER
  {
    // DO CLEANUP HERE
  }
}

那麼我們可以使用IDisposable來實驗同樣的功能:

public class ResourceUser : IDisposable {
  #region IDisposable Members
  public void Dispose () {
    // CLEAN UP HERE!!!
  }
  #endregion
}

IDisposable已經被集成到了關鍵字中。在using()的最後Dispose()的代碼塊會被調用。對象不應該在Dispose()的代碼塊後被引用,因為它被標上了”gone”並且准備被垃圾回收器回收。

public static void DOSomething () {
  ResourceUser rec = new ResourceUser();
  using (rec) {
    // DO SOMETHING
  } // DISPOSE CALLED HERE
  // DON'T Access rec HERE
}

我喜歡把代碼放在using塊內,這樣所有的變量和資源在塊結束後回被自動回收(主要是因為using關鍵字擴展了後是try … finally …, 而所有的具有IDisposable接口的對象的Dispose()方法會在finally的代碼塊中被自動調用)。

public static void DOSomething () {
  using (ResourceUser rec = new ResourceUser()) {
    // DO SOMETHING
  } // DISPOSE CALLED HERE
}

通過實現類的IDisposible接口,這樣我們可以在垃圾回收器前通過強制方式釋放我們的對象。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved