日期:2014-05-17  浏览次数:20946 次

关于自定义构造函数,有点不明,上来请教下

public enum PointColor
{LightBlue,BloodRed,Gold}

class Point
{
public int X{get;set;}
public int Y{get;set;}
public PointColor Color{get;set;}

public Point(int Xval,int Yval)
{
X = Xval;
Y = Yval;
Color = PointColor.Gold;
}

public Point(PointColor ptColor)
{
Color = ptColor;
}

public Point()
{
:this(PointColor.BloodRed){}
}

public void DisplayStats()
{
Console.WriteLine("[{0},{1}]",X,Y);
Console.WriteLine("Point is {0}",Color);
}
}

//使用初始化语法调用自定义构造函数
Point goldPoint = new Point(PointColor.Gold){X = 90,Y = 20};
Console.WriteLine("Value of Point is : {0}",goldPoint.DisplayStats());


那如果我这样调用呢?


//第一种
Point goldPoint = new Point(90,20){Color = PointColor.Gold};
//第二种
Point goldPoint = new Point{X = 90,Y = 20,Color = PointColor.Gold};


这样正不正确?新学这种调用的方法,挺迷糊的

------解决方案--------------------
Point goldPoint;

上面是实例化一个对象

goldPoint = new Point(90,20)

上面是初始化一个具体对象,并且使goldPoint指向他

Point goldPoint = new Point(90,20);

上面是初始化和实例化放在一起了。

Point goldPoint = new Point{X = 90,Y = 20,Color = PointColor.Gold};

上面是把实始化实例化以及对象内成员属性进行赋值的一种写法。