CLR筆記:4.類型基礎

來源:互聯網
上載者:User
4.1 所有類型都派生自System.Object
    System.Object提供的方法:GetType(),ToString(),GetHashCode(),Equals(),MemberwiseClone(),Finalize()
    所有對象都是用new操作符建立,建立過程:
        1. 計算對象大小,包括“類型對象指標”和“同步塊索引”
        2.從託管堆指派至的記憶體
        3.初始化對象的“類型對象指標”和“同步塊索引”
        4.調用ctor,傳入相應參數——最終會調用到System.Object的ctor,該ctor是空操作
        5.返回新對象的引用/指標

4.2 強制類型轉換
    型別安全,CLR的最重要特性之一。
         1.對象轉成其基類,不需要任何特殊文法,預設為安全隱式轉換    
            Object o = new Employee(); ——將new Employee轉為Object基類,可以看作:
                Employee e = new Employee(); 
                Object o = e;
         2.對象轉成其子類,要顯示轉換    Employee e = (Employee)o;
            但是,即使顯示轉換,也會在運行期錯誤
         基於以上原則,有 型別安全檢測:http://www.cnblogs.com/Jax/archive/2007/08/05/844159.html
    
    is和as操作符
        is:檢查一個對象是否相容於指定的類型,並返回一個bool值——即使類型不對,僅返回false,不會拋出異常;null對象則返回false            if (o is Employee)
            {
                Employee e = (Employee)o;
            }

            上述代碼檢測兩次物件類型,一次在if中的is,另一次在顯示轉型時——會影響效能,使用as代替。

        as:用來簡化上述代碼:永遠不會拋出異常,如果對象不能轉型,就返回null:            Employee e = o as Employee;

            if (e != null)
            { 
                //執行操作
            }

4.3 命名空間和程式集
    CLR不知道namespace概念,using是C#的文法,CLR只認識類型的全稱
    C#會自動在MSCorLib.dll中尋找所有核心FCL類型,如Object,Int32,String

    記住以下文法:using System = NameSpaceAnotherName;

4.4 運行時相互關係
    

         

聯繫我們

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