C# 之构造函数

 

参考《C#编程指南》

 

 类是否用 static 来修饰,有两种,一种是用static修饰,一种则不是。

对于前者,如果,类提供了一个无参数的构造函数,那么new 实例化对象时候,就会调用这个无参数的构造函数(也叫默认构造函数)
如果,类提供了一个有参数的构造函数,但是new时候,依然没有提供参数,那么情况是怎么样? 显然,是调用系统提供的一个构造函数。

综上, new实例化对象,不提参数,则调用默认构造函数。那么对于C++,是否成立? 也是成立的。

做个试验:

   class Person
    {
        int age;
        int sex;   //sex:1是男人,0是女人


        public Person()
        {
            Console.WriteLine("调用了Person()");
        }


        public Person(int age, int sex)
        {
            this.age = age;
            this.sex = sex;
            Console.WriteLine("调用了有参数的构造函数");
        }

    }

以下是调用代码:
            Person person = new Person();
            Person person2 = new Person(23, 1);

结果为:
调用了Person()
调用了有参数的构造函数

 

现在再做个试验,把我提供的默认构造函数注视掉,看结果是什么?

结果报错,提示:必须重载无参数的构造函数。

接着,在此基础上,把有参数的构造函数注视掉,看结果如何?

是可以通过的,!!!!!!!

“类提供了一个有参数的构造函数,但是new时候,依然没有提供参数,那么情况是怎么样? 显然,是调用系统提供的一个构造函数。”

这一话是有问题的!!!  如果你的类提供了一个有参数的构造函数,那么请你也提供一个无参数的构造函数(默认构造函数),

否则,用new实例化对象时(必须带参数)。

 另外:如果一个构造函数都不提供,那么是会调用系统提供的。

 

那么结构体呢? 有了类,为什么要用结构体?  记那么多语法,很烦人。。。。。。。。。


另外:自己提供的构造函数,如果没有初始化类中的数据,那么会被用默认的值来初始化,比如:int :0  ,string :NULL .

建议不要这样, 另外,如果涉及到聚合的时候,类中包含了另外一个对象,那么这样会很麻烦。编译器就不知道该提供默认值了。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值