[你必須知道的.NET] 第八回:品味類型---值類型與引用類型(上)-內存有理

作者: Anytao  來源: 博客園  發布時間: 2008-09-12 11:28  閱讀: 5784 次  推薦: 0   原文鏈接   [收藏]  
 

系列文章導航:

[你必須知道的.NET] 開篇有益

[你必須知道的.NET] 第一回:恩怨情仇:is和as

[你必須知道的.NET] 第二回:對抽象編程:接口和抽象類

[你必須知道的.NET] 第三回:歷史糾葛:特性和屬性

[你必須知道的.NET] 第四回:后來居上:class和struct

[你必須知道的.NET] 第五回:深入淺出關鍵字---把new說透

[你必須知道的.NET] 第六回:深入淺出關鍵字---base和this

[你必須知道的.NET] 第七回:品味類型---從通用類型系統開始

[你必須知道的.NET] 第八回:品味類型---值類型與引用類型(上)-內存有理

[你必須知道的.NET] 第九回:品味類型---值類型與引用類型(中)-規則無邊

[你必須知道的.NET] 第十回:品味類型---值類型與引用類型(下)-應用征途

[你必須知道的.NET] 第十一回:參數之惑---傳遞的藝術(上)

[你必須知道的.NET] 第十二回:參數之惑---傳遞的藝術(下)

[你必須知道的.NET] 第十三回:從Hello, world開始認識IL

[你必須知道的.NET] 第十四回:認識IL代碼---從開始到現在

[你必須知道的.NET] 第十五回:繼承本質論

[你必須知道的.NET] 第十六回:深入淺出關鍵字---using全接觸

[你必須知道的.NET] 第十七回:貌合神離:覆寫和重載

[你必須知道的.NET] 第十八回:對象創建始末(上)

[你必須知道的.NET] 第十九回:對象創建始末(下)

[你必須知道的.NET]第二十回:學習方法論

[你必須知道的.NET]第二十一回:認識全面的null

[你必須知道的.NET]第二十二回:字符串駐留(上)---帶著問題思考

[你必須知道的.NET]第三十二回,深入.NET 4.0之,Tuple一二

 

  本文將介紹以下內容:

  •類型的基本概念

  •值類型深入

  •引用類型深入

  •值類型與引用類型的比較及應用

  1. 引言

  買了新本本,忙了好幾天系統,終于開始了對值類型和引用類型做個全面的講述了,本系列開篇之時就是因為想寫這個主題,才有了寫個系列的想法。所以對值類型和引用類型的分析,是我最想成文的一篇,其原因是過去的學習過程中我就是從這個主題開始,喜歡以IL語言來分析執行,也喜好從底層的過程來深入了解。這對我來說,似乎是一件找到了有效提高的方法,所以想寫的沖動就沒有停過,旨在以有效的方式來分享所得。同時,我也認為,對值類型和引用類型的把握,是理解語言基礎環節的關鍵主題,有必要花力氣來了解和深入。  

  2. 一切從內存開始

  2.1 基本概念

  從上回《第七回:品味類型---從通用類型系統開始》我們知道,CLR支持兩種基本類型:值類型引用類型。因此,還是把MSDN這張經典視圖拿出來做個鋪墊。

  值類型(Value Type),值類型實例通常分配在線程的堆棧(stack)上,并且不包含任何指向實例數據的指針,因為變量本身就包含了其實例數據。其在MSDN的定義為值類型直接包含它們的數據,值類型的實例要么在堆棧上,要么內聯在結構中。我們由上圖可知,值類型主要包括簡單類型、結構體類型和枚舉類型等。通常聲明為以下類型:int、char、float、long、bool、double、struct、enum、short、byte、decimal、sbyte、uint、ulong、ushort等時,該變量即為值類型。  

  引用類型(Reference Type),引用類型實例分配在托管堆(managed heap)上,變量保存了實例數據的內存引用。其在MSDN中的定義為引用類型存儲對值的內存地址的引用,位于堆上。我們由上圖可知,引用類型可以是自描述類型、指針類型或接口類型。而自描述類型進一步細分成數組和類類型。類類型是則可以是用戶定義的類、裝箱的值類型和委托。通常聲明為以下類型:class、interface、delegate、object、string以及其他的自定義引用類型時,該變量即為引用類型。

  下面簡單的列出我們類型的進一步細分,數據來自MSDN,為的是給我們的概念中有清晰的類型概念,這是最基礎也是最必須的內容。

 

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()