91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中構造函數和析構函數的區別是什么

發布時間:2021-06-21 19:04:21 來源:億速云 閱讀:307 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關C#中構造函數和析構函數的區別是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

C#構造函數和析構函數

在你可以訪問一個類的方法、屬性或任何其它東西之前, ***條執行的語句是包含有相應類的C#構造函數和析構函數。甚至你自己不寫一個構造函數,也會有一個缺省的構造函數提供給你。

class TestClass  {  public TestClass(): base() {}   // 由編譯器提供  }

一個構造函數總是和它的類名相同,但是,它沒有聲明返回類型。總之,構造函數總是public的,你可以用它們來初始化變量。

public TestClass()  {  // 在這給變量  // 初始化代碼等等。  }

如果類僅包含靜態成員(能以類型調用,而不是以實例調用的成員),你可以創建一個private的構造函數。

private TestClass() {}

盡管存取修飾符在這一章的后面將要大篇幅地討論,但是private意味著從類的外面不可能訪問該構造函數。所以,它不能被調用,且沒有對象可以自該類定義被實例化。并不僅限于無參數構造函數——你可以傳遞初始參數來初始化成員。

public TestClass(string strName, int nAge) { …… }

作為一個C/C++程序員,你可能習慣于給初始化寫一個附加的方法,因為在構造函數中沒有返回值。當然,盡管在C#中也沒有返回值,但你可以引發一個自制的異常,以從構造函數獲得返回值。更多有關異常處理的知識在第七章 "異常處理"中有討論。

但是,當你保留引用給寶貴的資源,應該想到寫一個方法來解決:一個可以被顯式地調用來釋放這些資源。問題是當你可以在析構函數(以類名的前面加"~"的方式命名)中做同樣的事情時,為何還要寫一個附加的方法。

public ~TestClass()  {  // 清除  }

你應該寫一個附加方法的原因是垃圾收集器,它在變量超出范圍后并不會立即被調用,而僅當間歇期間或內存條件滿足時才被觸發。當你鎖住資源的時間長于你所計劃的時間時,它就會發生。因此,提供一個顯式的釋放方式是一個好主意,它同樣能從析構函數中調用。

public void Release()  {  // 釋放所有寶貴的資源  }  public ~TestClass()  {  Release();  }


關于C#中構造函數和析構函數的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东台市| 陕西省| 什邡市| 漳平市| 新余市| 阜新市| 湟中县| 田阳县| 阳东县| 磐安县| 九龙城区| 平南县| 通河县| 两当县| 绥滨县| 横山县| 卢湾区| 万宁市| 浑源县| 湘阴县| 临汾市| 驻马店市| 民乐县| 伽师县| 平定县| 即墨市| 乐陵市| 淮阳县| 茌平县| 临沂市| 滨海县| 盐山县| 镇巴县| 德昌县| 昆明市| 九龙县| 伊宁县| 揭西县| 新昌县| 稻城县| 松江区|