C# note 04——class2

來源:互聯網
上載者:User

標籤:

  1. 函數傳參,對於基礎資料型別 (Elementary Data Type)C#使用值傳遞,對於Object使用引用傳遞,因為C# Object的儲存是在堆中存對象的資料,在棧中放一個指向堆中資料的引用(指標)。所以可以認為C#的傳參時棧中元素的傳遞。
  2. 預設參數

    與C++一樣,預設參數必須是最後的幾個連續的參數

     

    是不合法的。

     

    與C++不同的是,

     

    C#除了前兩種方式,還支援第三種顯示傳遞參數的調用方法。

  3.  Object建立過程與Constructor

     

    先建立對象(分配空間),再調用CLR預設的建構函式(它會按上表初始化所有的類型),如果定義constructor,則調用該constructor,否則直接,

    調用初始化語句初始化Object(即指派陳述式,如int time = 300;)

 

    上一篇中說到,class內聲明的class,method,properties都是private,建構函式也不例外。所以建構函式傳統的加上public。

 

    初始化列表會先執行,比如下程式

    調用

    TestExp obj = new TestExp();

  •     obj.time的值會是300,而不是30。

    

  4.  Copy Constructor

     C# 沒有預設的copy Constructor, 必須手寫

    

 

    ICloneable實現淺拷貝。

    

    實現介面ICloneable,傳回值寫為Object,返回內建的MemberwiseClone()

    使用時,直接調用便好。

    

 

  5.  Destructor

    C# 提供記憶體回收行程(garbage collection),不許顯示的銷毀對象。

    解構函式

    顯式調用是不合法的,只能在程式結束(而不是函數結束)時會預設調用,其實質是把解構函式中的代碼合到基類Object.Finalize()中,並調用該函數。

     

    建構函式,解構函式都不能被繼承;解構函式還不能重載,只能有一個;

    解構函式不能帶修飾詞或參數。

 

   關於垃圾自動回收機制

    .net垃圾收集器進行垃圾收集的四種時機
    a.最常見的﹕當.net覺得合適時﹐例如它感到記憶體緊張了(朮語稱為﹕0代對象充滿)
    b.微軟強烈不建議使用的﹕GC的Collect方法調用(就是我們上面用的這種啦﹐因為會降低效能﹐會掛起進程, 等等﹐反正聽微軟的吧。當然某些時候可以用﹐

      就像我上面用來測試的代碼﹐呵呵...)
    c.應用程式定義域卸載時(AppDomain)
    d.CLR被關閉時(程式運行結束)

 

    所以,如果一旦你使用完對象你就想調用解構器,你該怎麼做?有兩個方法:

    調用垃圾搜集器(GC.Collect())來清理。

    實現IDisposable的Dispose方法。

 

    對於這兩種方法參見http://www.cnblogs.com/paper/archive/2009/07/31/1535998.html

    該部落格中的程式說明,當調用建構函式時,會先調用父類的建構函式,而解構函式相反,這點與c++類似。

    當出現停用對象(沒有指標指向)時,並不會馬上調用記憶體回收,因為他不滿足上四點,但可通過顯式調用GC.Collect(),來實現記憶體回收

 

    using語句與IDisposable

參考http://www.csharpwin.com/csharpspace/151.shtml

 

 

C# note 04——class2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.