C# 復制值類型的變量和類


  C#大多數基元類型包括int、float、double、和char等,注意這里不包括string,這些都是值類型。將變量聲明為值類型,編譯器會生成代碼來分配足以容納這個值得內存塊。編譯器分配內存的時候並不是分配一個能夠容納整個類的內存塊,它唯一做的事情就是分配一個這個類的地址。

  c#的string實際是類類型。由於字符大小不固定,所以分配的是一個動態的內存,而不是編譯的時候分配一個靜態。

  引用類型的復制與私有數據:
  要將一個引用類型的某個對象,復制給另一個引用類型的某個對象,不能直接復制引用,必須讓這個引用類型應用需要復制類的新實例,再將數據字段從上一個引用類型中復制出來。但是如果需要復制的這個字段在類中的屬性是私有的,就不能復制這個數據,私有字段作為屬性公開,再通過屬性讀取這個數據並復制出來。另外,類可以提供clone方法來返回自己的新實例,並填充相同的數據,clone方法能夠訪問對象的私有數據,並直接將數據復制到同一個類中的另一個實例中去。

  這個位置我們需要知道私有數據到底  私有 在哪個位置,private關鍵字創建了不能從類外訪問的字段或方法。 但是,並不是說它只能單過對象訪問,創建同一個類的兩個對象,他們分別能夠范圍對象的私有數據。clone就是依賴這個原理實現的,clone.a = this.a;這樣之所以能夠工作,正式因為可以從a類的當前實例中訪問clone對象的私有a字段,所以  私有 實際指的是在  類的級別上私有 並不是在對象級別上私有   私有和靜態也是兩碼事,字段聲明為私有,類的每個實例都有一份自己的數據,聲明為靜態,每個實例都共享同一份數據。

    
                                                                                                                          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM