驻马店哪家做网站好/重庆整站seo
使用可重载的构造函数时,有时使用一个构造函数调用另一个构造函数很有用。在C#中,可以通过this关键字的另一种形式来实现该操作
下面来看一下案例
class Program{static void Main(string[] args){XYcooord t1 = new XYcooord();XYcooord t2 = new XYcooord(8, 9);XYcooord t3 = new XYcooord(t2);Console.WriteLine("t1 x={0} y={1}",t1.x,t1.y);Console.WriteLine("t2 x={0} y={1}", t2.x, t2.y);Console.WriteLine("t3 x={0} y={1}", t3.x, t3.y);}}class XYcooord{public int x, y;public XYcooord() : this(0, 0){Console.WriteLine("这是没有参数的构造函数!");}public XYcooord(XYcooord obj) : this(obj.x, obj.y){Console.WriteLine("这是一个对象的参数!");}public XYcooord(int i, int j){Console.WriteLine("这是2个参数的构造函数");x = i;y = j;}}
结果:
这是2个参数的构造函数
这是没有参数的构造函数!
这是2个参数的构造函数
这是2个参数的构造函数
这是一个对象的参数!
t1 x=0 y=0
t2 x=8 y=9
t3 x=8 y=9
结果可以看出,在执行构造函数时候,先执行this关键字指定参数列表相匹配的重载构造函数,然后再执行原始构造函数。
通过this调用重载构造函数可以避免代码的不必要重复。
另一个优点是在未显示地指定参数时可以使用隐含的“默认参数”创建构造函数。例如:
public XYcooord(int x) : this(x,x) {}
该构造函数自动默认y和x值相等,当然,必须谨慎使用"默认参数"因为误用他们容易让类用户产生困惑。