91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#forUnity快速入門(連載13)-C#結構體

發布時間:2020-07-05 14:13:22 來源:網絡 閱讀:693 作者:Liu_guozhu 欄目:開發技術

C# for Unity編程語言快速入門教程(連載13)_C#結構體


   C#的“結構體”使用Struct 關鍵字來定義,是與“類”、"接口"并列的編程單位。其設計的主要目的是自定義“值類型”,即允許用戶自定義值類型。


適用范圍:
   結構適合一些小型的數據結構,這些結構包含的數據以創建后不修改的數據為主。也適合數據打包,一次性定義多個變量。


結構體的限制很多。
1> 除非字段聲明為const 、static,否則無法初始化。
2> 結構體沒有默認的構造函數。
3> 結構體可以聲明帶參數的構造函數。
4> 結構不能繼承。
5> 結構體在賦值時候進行復制。
6> 結構體實例化可以不使用New 運算符。
7> 結構可以實現接口。

8> 結構體使用時,可以New ,也可以不New. 如果不New ,則使用前必須為結構體中所有的成員變量賦值。


對于C#初學者來說,對于結構體是不好區分的,現就結構體與類的主要區別總結如下:

1>  如果你需要用面向對象的特性,必須用類。

2>  成員變量很多的時候,必須用類。

3>  類與結構體的最大區別是:“類" 是引用類型,所以類的實例對象是按照“引用傳值”,而"結構"類型是值類型,所以結構實例對象是按“值類型傳值”。


為了更好的說明類與結構的異同點,現提供如下代碼,供大家學習討論:

   class Program
    {

        public void ChangeValues_1(int intNum)
        {
            intNum = 100;
        }

        /// <summary>
        /// 測試類對象傳值(引用)
        /// </summary>
        /// <param name="pc"></param>
        public void ChangeValues_2(PointClass pc)
        {
            pc.PointX = 1000;
            pc.PointY = 1100;
        }

        /// <summary>
        /// 測試結構體傳值(拷貝)
        /// </summary>
        /// <param name="ps"></param>
        public void ChangeValues_3(PointStruct ps)
        {
            ps.PointX = 2000;
            ps.PointY = 2200;
        }


        static void Main(string[] args)
        {
            /* 引出學習案例(系統的“點”) */
            //Point firstPoint = new Point();
            //firstPoint.X = 10;
            //firstPoint.Y = 20;

            /*類與結構體 不同點測試 */
            //引用類型
            PointClass pc = new PointClass(10,20);            
            //值類型
            PointStruct ps = new PointStruct(50,60); //寫法1
            //寫法2:特別注意,在使用結構中的方法或者屬性前,
            //必須顯式的給結構的字段賦值,否則必須用New.
            PointStruct ps2;  
            ps2._PointX = 23;
            ps2._PointY = 88;


            Program obj = new Program();
            int intTestNum = 50;
            obj.ChangeValues_1(intTestNum);
            Console.WriteLine("Number=" + intTestNum);

            //結果表明:引用類型,在方法中發生的變化,對結果造成的影響
            obj.ChangeValues_2(pc);

            Console.WriteLine("pc.pointX={0},pointY={1}",pc.PointX,pc.PointY);

            obj.ChangeValues_3(ps);
            Console.WriteLine("ps.pointX={0},pointY={1}", ps.PointX, ps.PointY);
        }
    }

    //定義的類
    class PointClass
    {
        private int _PointX;
        private int _PointY;

        public int PointX
        {
            get { return _PointX; }
            set { _PointX = value; }
        }
        public int PointY
        {
            get { return _PointY; }
            set { _PointY = value; }
        }

        public PointClass(int px, int py)
        {
            _PointX = px;
            _PointY = py;
        }
    }

    //定義的結構體
    struct PointStruct
    {
        public int _PointY;
        public int _PointX;


        public int PointX
        {
            get { return _PointX; }
            set { _PointX = value; }
        }
        public int PointY
        {
            get { return _PointY; }
            set { _PointY = value; }
        }

        public PointStruct(int px, int py)
        {
            _PointX = px;
            _PointY = py;
        }
    }




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青冈县| 镇雄县| 岐山县| 砚山县| 和静县| 贡嘎县| 罗定市| 文登市| 长白| 梓潼县| 绩溪县| 济阳县| 石柱| 临朐县| 葫芦岛市| 会宁县| 商丘市| 尉犁县| 新巴尔虎右旗| 永福县| 合作市| 海兴县| 靖安县| 丰顺县| 会东县| 永寿县| 内江市| 刚察县| 都安| 阳高县| 东城区| 乐亭县| 克拉玛依市| 怀来县| 大关县| 长垣县| 南陵县| 友谊县| 长武县| 偏关县| 孝感市|