C#通过this调用重载的函数

使用可重载的构造函数时,有时使用一个构造函数调用另一个构造函数很有用。在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值相等,当然,必须谨慎使用"默认参数"因为误用他们容易让类用户产生困惑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值