自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#構(gòu)造函數(shù)和析構(gòu)函數(shù)

開發(fā) 后端
這里介紹C#構(gòu)造函數(shù)和析構(gòu)函數(shù),一個(gè)構(gòu)造函數(shù)總是和它的類名相同,但是,它沒(méi)有聲明返回類型。總之,構(gòu)造函數(shù)總是public的,你可以用它們來(lái)初始化變量。

C#構(gòu)造函數(shù)和析構(gòu)函數(shù)

在你可以訪問(wèn)一個(gè)類的方法、屬性或任何其它東西之前, ***條執(zhí)行的語(yǔ)句是包含有相應(yīng)類的C#構(gòu)造函數(shù)和析構(gòu)函數(shù)。甚至你自己不寫一個(gè)構(gòu)造函數(shù),也會(huì)有一個(gè)缺省的構(gòu)造函數(shù)提供給你。

  1. class TestClass  
  2. {  
  3. public TestClass(): base() {}   
  4. // 由編譯器提供  

一個(gè)構(gòu)造函數(shù)總是和它的類名相同,但是,它沒(méi)有聲明返回類型。總之,構(gòu)造函數(shù)總是public的,你可以用它們來(lái)初始化變量。

  1. public TestClass()  
  2. {  
  3. // 在這給變量  
  4. // 初始化代碼等等。  

如果類僅包含靜態(tài)成員(能以類型調(diào)用,而不是以實(shí)例調(diào)用的成員),你可以創(chuàng)建一個(gè)private的構(gòu)造函數(shù)。

  1. private TestClass() {} 

盡管存取修飾符在這一章的后面將要大篇幅地討論,但是private意味著從類的外面不可能訪問(wèn)該構(gòu)造函數(shù)。所以,它不能被調(diào)用,且沒(méi)有對(duì)象可以自該類定義被實(shí)例化。并不僅限于無(wú)參數(shù)構(gòu)造函數(shù)——你可以傳遞初始參數(shù)來(lái)初始化成員。

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

作為一個(gè)C/C++程序員,你可能習(xí)慣于給初始化寫一個(gè)附加的方法,因?yàn)樵跇?gòu)造函數(shù)中沒(méi)有返回值。當(dāng)然,盡管在C#中也沒(méi)有返回值,但你可以引發(fā)一個(gè)自制的異常,以從構(gòu)造函數(shù)獲得返回值。更多有關(guān)異常處理的知識(shí)在第七章 "異常處理"中有討論。

但是,當(dāng)你保留引用給寶貴的資源,應(yīng)該想到寫一個(gè)方法來(lái)解決:一個(gè)可以被顯式地調(diào)用來(lái)釋放這些資源。問(wèn)題是當(dāng)你可以在析構(gòu)函數(shù)(以類名的前面加"~"的方式命名)中做同樣的事情時(shí),為何還要寫一個(gè)附加的方法。

  1. public ~TestClass()  
  2. {  
  3. // 清除  

你應(yīng)該寫一個(gè)附加方法的原因是垃圾收集器,它在變量超出范圍后并不會(huì)立即被調(diào)用,而僅當(dāng)間歇期間或內(nèi)存條件滿足時(shí)才被觸發(fā)。當(dāng)你鎖住資源的時(shí)間長(zhǎng)于你所計(jì)劃的時(shí)間時(shí),它就會(huì)發(fā)生。因此,提供一個(gè)顯式的釋放方式是一個(gè)好主意,它同樣能從析構(gòu)函數(shù)中調(diào)用。

  1. public void Release()  
  2. {  
  3. // 釋放所有寶貴的資源  
  4. }  
  5. public ~TestClass()  
  6. {  
  7. Release();  

調(diào)用析構(gòu)函數(shù)中的釋放方法并不是必要的——總之,垃圾收集會(huì)留意釋放對(duì)象。但沒(méi)有忘記清除是一種良好的習(xí)慣。以上介紹C#構(gòu)造函數(shù)和析構(gòu)函數(shù)。

【編輯推薦】

  1. 介紹Mono C#編譯器
  2. C#運(yùn)算符重載學(xué)習(xí)總結(jié)
  3. 概述C#語(yǔ)言的結(jié)構(gòu)體
  4. C#遺傳算法學(xué)習(xí)筆記
  5. 討論C#分部方法
責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2009-09-03 13:14:55

C#構(gòu)造函數(shù)C#析構(gòu)函數(shù)

2009-07-30 15:24:13

C#析構(gòu)函數(shù)C#構(gòu)造函數(shù)

2010-07-20 09:52:27

Perl構(gòu)造函數(shù)

2010-01-18 15:53:27

C++析構(gòu)函數(shù)

2009-08-13 14:36:40

C#結(jié)構(gòu)體構(gòu)造函數(shù)

2025-02-18 00:08:00

代碼C++RAII

2009-07-31 16:06:50

成員函數(shù)構(gòu)造函數(shù)C#

2009-07-31 14:15:38

C# 構(gòu)造函數(shù)

2009-08-24 18:09:13

C#構(gòu)造函數(shù)

2010-02-04 16:39:26

C++析構(gòu)函數(shù)

2021-12-11 19:02:03

函數(shù)C++對(duì)象

2009-07-31 15:44:02

C#靜態(tài)構(gòu)造函數(shù)

2009-08-14 09:15:28

C#調(diào)用構(gòu)造函數(shù)

2009-07-31 15:37:45

C#靜態(tài)構(gòu)造函數(shù)

2009-08-20 14:28:00

C#靜態(tài)構(gòu)造函數(shù)

2009-09-04 11:15:07

選擇C#構(gòu)造函數(shù)

2011-07-15 01:29:39

C++析構(gòu)函數(shù)

2009-09-02 10:49:46

C#調(diào)用析構(gòu)方法

2009-08-13 18:02:11

C#靜態(tài)構(gòu)造函數(shù)

2009-09-18 09:02:45

CLR Via C#
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)