<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    C#的類型系統(tǒng)

    Posted on 2007-02-12 12:30 dennis 閱讀(987) 評論(0)  編輯  收藏 所屬分類: C#歷程
    一.C#的統(tǒng)一類型系統(tǒng)
    1.C#的類型系統(tǒng)是統(tǒng)一的,java的類型系統(tǒng)分為:基本類型(原生類型)和類類型,而C#的所有類型直接或間接地從object類類型派生而來,從類型系統(tǒng)上來看比java更OO。
    2.C#的類型分為三類:
    (1)值類型,一個值類型或是結(jié)構(gòu)類型或是枚舉類型
    (2)引用類型
    (3)指針類型
    值類型與
    引用類型的不同在于:值類型的變量直接包含其數(shù)據(jù),而引用類型的變量存儲對其數(shù)據(jù)的引用(reference)后者稱為對象(object)。對于引用類型兩個變量可能引用同一個對象,因此對一個變量的操作可能影響另一個變量所引用的對象。對于值類型,每個變量都有自己的數(shù)據(jù)副本,對一個變量的操作不可能影響另一個變量。
    二。值類型
    1.所有值類型從類System.ValueType隱式繼承,后者又從類object繼承。任何類型都不可能從值類型派生。

    2.
    所有值類型都隱式聲明一個稱為默認構(gòu)造函數(shù)(default constructor)的公共無參數(shù)實例構(gòu)造函數(shù)。默認構(gòu)造函數(shù)返回一個零初始化實例它就是該值類型的默認值(default value)

    ·???????? 對于所有simple-types,默認值是將其所有位都置零的位模式所形成的值

    o??????? 對于sbyte、byteshort、ushort、int、uint、longulong默認值為0。

    o??????? 對于char,默認值為'\x0000'

    o??????? 對于float,默認值為0.0f

    o??????? 對于double,默認值為0.0d

    o??????? 對于decimal,默認值為0.0m。

    o??????? 對于bool,默認值為false。

    ·???????? 對于enum-typeE,默認值為0

    ·???????? 對于struct-type,默認值是通過將所有值類型字段設(shè)置為它們的默認值、將所有引用類型字段設(shè)置為null而產(chǎn)生的值。

    3.C#中有所謂的簡單類型概念(simple type),類似于java的基本類型,但又不同,C#的簡單類型本質(zhì)上都是結(jié)構(gòu)類型(預(yù)定義集合的結(jié)構(gòu)類型),所以還是值類型,從System.ValueType繼承而來。C#的簡單類型包括:

    保留字

    化名的類型

    sbyte

    System.SByte

    byte

    System.Byte

    short

    System.Int16

    ushort

    System.UInt16

    int

    System.Int32

    uint

    System.UInt32

    long

    System.Int64

    ulong

    System.UInt64

    char

    System.Char

    float

    System.Single

    double

    System.Double

    bool

    System.Boolean

    decimal

    System.Decimal

    這些簡單類型都是System命名空間中預(yù)定義結(jié)構(gòu)類型的別名(ruby的別名實在貼心)

    4.枚舉類型,枚舉類型是具有命名常量的獨特的類型。每個枚舉類型都有一個基礎(chǔ)類型,該基礎(chǔ)類型必須為 bytesbyteshort、ushort、int、uintlongulong。如果沒有為枚舉類型中的元素指定基礎(chǔ)值,默認是從0開始逐一遞增。

    三。引用類型

    1.引用類型是類類型、接口類型、數(shù)組類型或委托類型。

    2.類類型:包括預(yù)定義的類類型和用戶通過class關(guān)鍵字的自定義類類型

    3.對象類型:

    object類類型是所有其他類型的最終基類。C# ?中的每種類型都是直接或間接從object類類型派生的。

    關(guān)鍵字object只是預(yù)定義類System.Object的別名。

    4.string類型:
    string類型是直接從object繼承的密封類類型。關(guān)鍵字string只是預(yù)定義類System.String的別名.
    5.接口類型:
    與java中的接口概念基本一致,可以變相實現(xiàn)多重繼承。

    類類型

    說明

    System.Object

    所有其他類型的最終基類。

    System.String

    C# ?語言的字符串類型。

    System.ValueType

    所有值類型的基類。

    System.Enum

    所有枚舉類型的基類。

    System.Array

    所有數(shù)組類型的基類。

    System.Delegate

    所有委托類型的基類。

    System.Exception

    所有異常類型的基類。


    四。裝箱、拆箱概念
    1.裝箱和拆箱的概念是C# ?的類型系統(tǒng)的核心。它在 value-typereference-type 之間的架起了一座橋梁,使得任何 value-type 的值都可以轉(zhuǎn)換為 object 類型的值,反過來轉(zhuǎn)換也可以。
    2.裝箱:
    裝箱轉(zhuǎn)換允許將value-type隱式轉(zhuǎn)換為reference-type
    裝箱的行為可以用下面的過程描述:

    sealed class T_Box: System.ValueType
    {
    T value;

    public T_Box(T t) {
    ???? value = t;
    }
    }

    分配一個對象實例,然后將value-type的值復(fù)制到該實例中
    3.拆箱:
    拆箱轉(zhuǎn)換允許將reference-type顯式轉(zhuǎn)換為value-type。
    從對象boxvalue-typeT的拆箱轉(zhuǎn)換相當(dāng)于執(zhí)行表達式((T_Box)box).value
    主站蜘蛛池模板: 亚洲AV无码乱码在线观看| 热99re久久精品精品免费| 中文字幕在线亚洲精品| 成人免费夜片在线观看| 亚洲人成无码网站久久99热国产| 久久久久亚洲AV无码去区首| 欧洲美熟女乱又伦免费视频| 日韩色日韩视频亚洲网站| 国产免费av片在线播放| 青青草97国产精品免费观看| 亚洲日韩人妻第一页| 久久www免费人成看国产片| 日本红怡院亚洲红怡院最新| 18女人腿打开无遮掩免费| 亚洲美女视频一区二区三区| 青青青国产在线观看免费网站| 亚洲性无码AV中文字幕| 全黄性性激高免费视频| 久久www免费人成精品香蕉| 亚洲情a成黄在线观看动漫尤物| 一级特黄aa毛片免费观看| 亚洲另类小说图片| 永久免费视频v片www| eeuss在线兵区免费观看| 久久亚洲精品中文字幕三区| 97在线视频免费| 香蕉视频亚洲一级| 亚洲情综合五月天| 日韩免费一区二区三区在线播放| 国产精品亚洲一区二区三区久久| 老司机亚洲精品影视www| 亚洲最大免费视频网| 国产精品亚洲av色欲三区| 国产精品久久久亚洲| 好爽又高潮了毛片免费下载| 一级毛片免费播放男男| 亚洲成人在线免费观看| 亚洲成av人片天堂网老年人| 91av在线免费视频| 一区二区三区在线免费| 亚洲国产成人va在线观看网址|