C#中解構函式,Close函式,Dispose函式的區別
C#中解構函式是有垃圾蒐集器來呼叫的,當所引用的堆上的資料當無效時,會隱式呼叫。一般表現為當引用變數超出其作用域時就會呼叫。
Close函式和Dispose函式則是一種約定。呼叫Close函式釋放資源後可能還需要再次使用,而Dispose函式釋放的資源不再使用。
另外,如果類實現了IDisposable介面,例項化類時可以使用using關鍵字,則當超出using關鍵字作用域時會隱式呼叫Dispose函式,如:
using(CTest inst = new CTest())
{
//Do Something;
Close函式和Dispose函式則是一種約定。呼叫Close函式釋放資源後可能還需要再次使用,而Dispose函式釋放的資源不再使用。
另外,如果類實現了IDisposable介面,例項化類時可以使用using關鍵字,則當超出using關鍵字作用域時會隱式呼叫Dispose函式,如:
using(CTest inst = new CTest())
{
//Do Something;
} //Call Dispose Method Here
看得到的區別:
1.在protected override void Dispose(bool disposing)方法中,加一個MessageBox,再在窗體中加一按鈕,按鈕程式碼是this.Close();
那麼MessabeBox並不會彈出來,也就是說並不會呼叫到DISPOSE方法
再把按鈕事件程式碼改為:this.Dispose();
那麼就會彈出MESSAGEBOX. 也就是直接銷燬窗體所開啟的所有資源.
2.在一個窗體中使用
Form. Frm2=new Form2();
Frm2.ShowDialog();
在Form2中使用Close()方法關閉窗體Form2後,在FORM1中還是可以直接使用Frm2.ShowDialog()把Form2顯示出來.
而用Dispose()方法關閉窗體Form2後, 在FORM1中就不可以直接使用Frm2.ShowDialog()把Form2顯示出來.還是要建立新例項Form. Frm2=new Form2();
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-580649/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建構函式與普通函式的區別函式
- C#中的解構函式C#函式
- JavaScript建構函式和普通函式的區別JavaScript函式
- closest()函式parent()函式的區別函式
- 函式宣告和函式表示式的區別函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- prop()函式和attr()函式的區別函式
- 建構函式與解構函式函式
- JavaScript函式宣告和函式表示式區別JavaScript函式
- open和close函式函式
- 虛解構函式(√)、純虛解構函式(√)、虛建構函式(X)函式
- python內建函式-eval()函式與exec()函式的區別Python函式
- 箭頭函式與普通函式的區別函式
- append()函式與html()函式的區別APP函式HTML
- jquery position()函式和offset()函式的區別jQuery函式
- # 普通函式和箭頭函式的區別函式
- 函式過載與函式模板的區別函式
- C#中的建構函式C#函式
- 箭頭函式與普通函式區別函式
- jquery的$.each()函式和$.map()函式的區別jQuery函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- 正規表示式match()函式和exec()函式的區別函式
- fill函式與memset函式的區別(c++)函式C++
- c# tcbs之建構函式呼叫建構函式示例C#函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- 關於建構函式與解構函式的分享函式
- 箭頭函式和普通函式的10個區別函式
- 面試題:箭頭函式和普通函式的區別面試題函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- 簡述箭頭函式和普通函式的區別函式
- JavaScript:鉤子函式與回撥函式的區別JavaScript函式
- 類的建構函式和解構函式函式
- PHP筆記:建構函式與解構函式PHP筆記函式
- SQL server 表值函式 標量值函式 區別SQLServer函式
- js表示式方式和函式語句方式宣告函式的區別JS函式
- C# 中的本地函式C#函式
- php取整函式ceil,floor,round,intval函式的區別PHP函式