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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建構函式與普通函式的區別函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- strcpy函式和memcpy函式的區別函式memcpy
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- python內建函式-eval()函式與exec()函式的區別Python函式
- open和close函式函式
- 建構函式與解構函式函式
- JavaScript函式宣告和函式表示式區別JavaScript函式
- 箭頭函式與普通函式的區別函式
- # 普通函式和箭頭函式的區別函式
- 箭頭函式與普通函式區別函式
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- fill函式與memset函式的區別(c++)函式C++
- StretchBlt函式和BitBlt函式的區別和用法函式
- 函式宣告與函式表示式有什麼區別?函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- 關於建構函式與解構函式的分享函式
- 箭頭函式和普通函式的10個區別函式
- 簡述箭頭函式和普通函式的區別函式
- JavaScript:鉤子函式與回撥函式的區別JavaScript函式
- 類的建構函式和解構函式函式
- PHP筆記:建構函式與解構函式PHP筆記函式
- 面試題:箭頭函式和普通函式的區別面試題函式
- Day 59/100 箭頭函式和普通函式的區別函式
- C# 中的本地函式C#函式
- Python中函式和方法的區別Python函式
- del解構函式函式
- Rust中的into函式和from函式Rust函式
- Sql 中的 left 函式、right 函式SQL函式
- C++ 建構函式和解構函式C++函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 深入理解箭頭函式和傳統函式的區別函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- JavaScript中的compose函式和pipe函式JavaScript函式
- 區分函式防抖&函式節流函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- 詳解箭頭函式和普通函式的區別以及箭頭函式的注意事項、不適用場景函式
- main函式的入口函式AI函式