国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#的new操作符到底做了什么

2019-11-17 02:51:52
字體:
來源:轉載
供稿:網友

C#的new操作符到底做了什么

使用new操作符來創建對象,其背后到底發生了什么?

有一個父類Animal,Dog派生于Animal。

    class PRogram
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            Console.WriteLine("我能調用老祖宗Object的實例方法GetType,顯示結果為:" + dog.GetType() );
            Console.WriteLine("我能拿到父類的屬性Age=" + dog.Age);
            Console.WriteLine("我當然能拿到自己的公共字段_weight=" + dog._weight);
            
        }
    }
    public class Animal
    {
        public int Age { get; set; }
        public Animal(){}
    }
    public class Dog : Animal
    {
        public decimal _weight;
        public Dog(){}
    }

9

雖然創建了子類Dog的實例,但通過dog實例能調用"老祖宗"System.Object的實例方法,也能獲取到父類的公共屬性Age的值,并且所有的實例字段值為其類型的默認值。

new操作符做的事情大致包括:

計算Dog類以及所有父類實例字段所占的字節數計算Dog類以及所有父類"類型對象指針"和"同步塊索引"所占的字節數根據字節數,托管堆分配內存先調用所有父類的構造函數,最后調用Dog的構造函數。在這過程中,初始化所有實例字段,字段值為字段類型的默認值或構造函數實參值;初始化"類型對象指針"和"同步塊索引"成員把新建的Dog實例的堆地址賦值給棧變量dog通過new創建的托管堆對象最終由GC回收


上一篇:約瑟夫環的數組

下一篇:Individual Project

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄石市| 弥渡县| 准格尔旗| 封丘县| 小金县| 鄂托克前旗| 德安县| 长阳| 洛宁县| 和平区| 和龙市| 南充市| 青铜峡市| 锦屏县| 隆子县| 塘沽区| 丹江口市| 崇阳县| 亳州市| 杭锦后旗| 双桥区| 平和县| 民和| 黔西县| 腾冲县| 惠州市| 托克逊县| 衡南县| 吉首市| 阿拉善左旗| 合阳县| 时尚| 凤庆县| 成武县| 宿迁市| 河东区| 乐安县| 望谟县| 黄平县| 柞水县| 五峰|