<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      前言


      在上一節(jié)中,我們講到在c#中所有的類都繼承一個基類--System.Object。然后其下又分為倆大類--值類型及引用類型。這一節(jié)我們詳細講解值類型和引用類型包含了那些東西及內(nèi)存的分配

      堆和棧


      在我們講解類型前,我們得先去了解堆和棧是什么,及其區(qū)別。我們可以先知道值類型和引用類型的引用都是分配在棧中的,而引用類型的對象分配在堆中的。我們詳細看看堆和棧有啥區(qū)別及其原理吧

      堆(heap)
      --堆的分配空間是自下到上的,已占用的空間在自由空間下面,C#中引用類型的對象及分配在堆中的,內(nèi)存的分配是連續(xù)的。內(nèi)存對象釋放是受垃圾回收機制管理的,所有在引用對象釋放時會消耗更多的性能。效率相對于棧來說是較低的。

      棧(stack
      )--棧的分配空間是自上到下的,遵循先進先出的原則,依次釋放分配的內(nèi)存空間。分配的內(nèi)存空間是連續(xù)的,C#中的值類型及引用類型的引用都是存放在棧中的。


      當(dāng)一個類的實例創(chuàng)建對象的的時候,這個對象的不同的成員將被分配到不用的內(nèi)存空間,值類型及引用類型的引用分配到棧中,引用類型對象分配到堆中,靜態(tài)成員被分配到全局數(shù)據(jù)區(qū)。這個時候棧上的指針會指向堆中實際的對象,在對象使用完成后,指針和對象會切開聯(lián)系,從而使對象進入冬眠期,因為棧具有自我維護性,內(nèi)存管理通過操作系統(tǒng)完成,而堆中的冬眠對象將有垃圾回收機制進行回收,釋放對象所占的內(nèi)存。

      值類型及引用類型

      值類型:

      結(jié)構(gòu)體:struct(直接派生于System.ValueType)

      數(shù)值類型:整型、浮點型、decimal型、bool型

      枚舉:enum(派生于System.Enum)

      引用類型:

      數(shù)組:Array(派生于System.Array)

      類:class(派生于System.Object)

      接口:interface

      委托:delegate(派生于System.Delegate)

      字符串:string(System.String)

      在此特別強調(diào)
      :.Net中所有的元素在使用前都必須初始化,在調(diào)用new創(chuàng)建實例的時候,編譯器會隱式的調(diào)用無參構(gòu)造函數(shù)進行初始化。所有的值類型的值都為0(char為’0’),所有引用類型為null。

      在此可調(diào)用IsValueType來判斷類型是否為值類型

      StringBuilder strSql = new?StringBuilder();

      ?if?(strSql.GetType().IsValueType)

      ????{

      ?

      }


      引用類型中尤為注意的事string類型,它具有一特效--恒定不變性,什么意思呢?也就是說string類型一旦賦值,一旦在Heap堆中分配了內(nèi)存存儲對象,則再也無法改變其對象的內(nèi)容
      。我們看下面這個例子

      String a=”aaa”;

      a=”bbb”;


      在這個例子中先是對象a創(chuàng)建在堆中分配內(nèi)存存儲’aaa’,然后又給a對象重新賦值’bbb’,其中并不是修改堆內(nèi)存中對象aaa為bbb,實則是重新創(chuàng)建了一個堆內(nèi)存對象存儲’bbb’,然后把它的引用地址指向a,原來的堆內(nèi)存對象’aaa’還繼續(xù)保存在堆內(nèi)存中,不曾修改。只有當(dāng)GC垃圾回收機制處理回收,才會消失。

      總結(jié)

                          c#基礎(chǔ)知識詳解系列
      <https://www.cnblogs.com/hulizhong/p/11205119.html>

      歡迎大家掃描下方二維碼,和我一起學(xué)習(xí)更多的C#知識


      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          aa8男人的天堂uk | 老B乱子伦| 久久久黑人又粗又大XXX精品 | 在线观看亚洲天堂 | 总裁大手伸进内衣揉捏小说 | 雷电将军被丘丘人抓去繁衍后代中文版 | 黑人操逼图纸 | 国产无遮挡 | 最新日韩视频 | 亚洲无在线观看 |