C++.net中的常見問題一(關於數組)

來源:互聯網
上載者:User

通過C++擴充, 可以用關鍵字__gc來聲明__gc數組,或者用託管類型來聲明數組。由於__gc數組被建立在託管堆上,所以它在聲明和使用上,和標準(非託管類型)數組相比,有其額外的標準與特點。

__gc類型數組被動態建立於託管堆上,數組元素的數量不屬於它定義的內容,同一個陣列變數可以指向不同長度的數組。

例如:
System::Int32 arr[] = __gc new System::Int32[100];
arr = __gc new System::Int32[200];//合法

和標準的C++數組一樣,__gc 數組的索引也是以0為基數。其數組下標的表示方式與標準的C++相同,也是[],但不同的是,不能進行指標運算,且不能交換使用。

特點

  • __gc數組只能用__gc new關鍵字建立
  • 通過關鍵字new建立託管類型時,其預設為__gc new

限制

  • __gc 數組的元素必須為__value 類型,或者是指向__gc類的__gc 指標
  • 關鍵字__nogc new不能用於建立託管類型數組
  • __gc數組在定義時不能指定其長度,其長度只能在通過__gc new建立數組時指定

一個__gc數組本身是一個__gc對象,是一個指向CLR堆的指標。該指標通過下標存取數組元素。作為一個__gc對象,它有著和其它__gc類相同的約束。值得注意的是,數組元素不能是非託管的C++類型,即非POD類型。

最後,所有的__gc數群組繼承於System::Array,因此所有System::Array的方法和屬性都可以直接應用於__gc陣列變數。

完!

 附:gc即garbage collection垃圾收集,即通過__gc new建立的對象可以被CLR自動清除。
         本文有遺漏的地方,還請朋友你指正。聯絡QQ:64528619

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.