【C# 教程系列第 7 篇】什么是 c# 中的构造函数

这是【C# 教程系列第 7 篇】,如果觉得有用的话,欢迎关注专栏。

前几天同事问我用过析构函数没,说真的,构造函数倒是经常用,析构函数还真没用过。

刚看资料整理了两者的区别以及用法,这篇博客我先讲“构造函数”,部分内容为方便自己和大家理解,就转化为我自己的语言来描述,供大家参考。

首先来看下构造函数的定义

一:什么是构造函数?

定义:构造函数是在类被实例化的时候(即创建类的对象实例时)调用,它也是类的成员,

具有以下特点:

  • 构造函数的名称必须与类名相同。
  • 构造函数没有返回值,但可以有参数,能够重载。
  • 如果将构造函数设置为 Private ,就不能再使用此构造创建实例。

即使开发人员不为类编写构造函数,它默认就有一个不带参数的构造函数,如下代码

		public class CarOne
        {
            
        }
    
        public class CarTwo
        {
            public CarTwo()
            {
                
            }
        }

CarOne 和 CarTwo 的定义其实是一样的,在使用 new 运算符创建类的实例时,所产生的 结果是相同的,如下代码所示。

   CarOne carOne = new CarOne();
   CarTwo carTwo = new CarTwo();

小技巧:在 vs 里输入 ct ,再按 Tab 键可以快速实现构造函数(构造函数的英文单词是 ctor )

不过有时开发者需要在类型初始化的过程中加入自己的处理代码,此时系统默认的构造函数就无法满足我们的需求,就有必要自己来定义构造函数了。

二:举例说明
这里我定义一个玩具类 Toy ,参数类型为字符串类型,如下代码

    public class Toy
    {
        public Toy(string name)
        {
            print("这个玩具叫"+name);
        }
    }

然后我们直接创建 Toy 类的实例,会有什么问题吗?如下图所示
在这里插入图片描述
由图可知
如果自己编写了构造函数,则系统默认的构造函数就会被覆盖,如果同时希望可以用无参构造函数,就必须自己手动把无参构造函数也一并写上,添加后错误就会消失,同时多了一句话,如下图所示
在这里插入图片描述
new Toy() 括号里空着,代表用的无参构造函数,如果要使用带参数的构造函数来创建类型的实例,就需要传递数据给对应的参数,例如:

Toy myToy=new Toy("兰博基尼");

启动 Unity,打印结果如下
在这里插入图片描述
不过,对象实例是暂存在内存中的,它不可能永远存在,在不需要使用时就会被清理,在 C++ 中,类实例是通过调用构造函数来创建,通过调用析构函数来销毁,在 C# 中也可以为类型编写析构函数。
因时间关系,关于析构函数我放到下一篇博客来写,明天写,不脱更哦

补充:什么是析构函数隔天已经写好,我把链接加到末尾,大家看到这里时可以 点击此处跳转

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen Su

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值