程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#3.0語言新特性之對象和集合初始化器(2)

C#3.0語言新特性之對象和集合初始化器(2)

編輯:關於C語言

20.4.2 在初始化語法中調用自定義構造函數

在上面的例子中,Point類型初始化時隱式地調用了缺省構造函數。其實我們 也被允許直接顯式指明使用哪一個構造函數,比如:

Point p = new Point() { X = 100, Y = 200 };

當然,也可以不調用缺省的構造函數,而是使用自定義的兩個參數的那個構 造函數,如下所示:

Point p = new Point(10, 20) { X = 100, Y = 200 };

在上面的代碼中,執行的結果是構造函數參數裡的10,20被忽略,最終的實例 是xPos=100,yPos=200。在目前的Point類定義中,調用自定義的構造函數沒什 麼太大的用處,反倒顯得累贅。然而,我們給Point結構體新增加一個允許在調 用時指定一個顏色(PointColor的枚舉類型)的構造函數,那麼這樣的自定義構 造函數與初始化語法之組合就顯得很好很強大了。現在,我們來把把Point結構 體重構一下,代碼如下所示:

public enum PointColor

    {

        白色,

        黑色,

        綠色,

        藍色

    }

    public class Point

    {

        private int xPos, yPos;

        private PointColor c;

        public Point()

        {

        }

        public Point(PointColor color)

        {

            xPos = 0;

            yPos = 0;

            c = color;

        }

        public Point(int x, int y)

        {

            xPos = x;

            yPos = y;

            c = PointColor.綠色;

        }

        public int X

        {

            get { return xPos; }

            set { xPos = value; }

        }

        public int Y

        {

            get { return yPos; }

            set { yPos = value; }

        }

        public override string ToString()

        {

            return string.Format("[{0}, {1}, Color = {2}]", xPos, yPos, c);

        }

    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved