<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
    主站蜘蛛池模板: 99re6在线精品免费观看| 免费可以在线看A∨网站| 亚洲色图黄色小说| 亚洲av日韩av无码| 中文字幕av无码无卡免费| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 精品一区二区三区免费观看 | 亚洲色中文字幕无码AV| 久久精品熟女亚洲av麻豆| 中文字幕中韩乱码亚洲大片| 久久A级毛片免费观看| 人禽杂交18禁网站免费| 免费国产在线精品一区| 亚洲日本一区二区| 免费夜色污私人影院网站电影| 无码国产精品一区二区免费I6| 国产亚洲精彩视频| 久久av无码专区亚洲av桃花岛| 一区二区在线视频免费观看| 亚洲国产a级视频| 日韩毛片一区视频免费| 亚洲视频一区二区三区| 四虎影视永久免费观看地址| 亚洲av片在线观看| yy6080久久亚洲精品| 曰批免费视频播放在线看片二 | 亚洲国产另类久久久精品小说 | 精品国产亚洲一区二区三区| 最近最新中文字幕完整版免费高清 | 日韩中文无码有码免费视频| 日韩精品人妻系列无码专区免费| 777亚洲精品乱码久久久久久 | 嫩草影院免费观看| 99视频在线精品免费| 一级视频免费观看| 亚洲丰满熟女一区二区哦| 又爽又高潮的BB视频免费看| 国产免费的野战视频| 欧洲乱码伦视频免费国产 | 在线亚洲午夜理论AV大片| 99re这里有免费视频精品|