小言_互联网的博客

c#入门-构造方法

313人阅读  评论(0)

程序中的类是用来模拟现实中的概念的。写出来大概感觉是这样

class{
   
	int 年龄;
	string 名字;
	public void 过生日() {
    年龄++; Console.WriteLine($"{名字}又长了一岁"); }
	public void 修改名字(string 新名字) {
    Console.WriteLine($"{名字}改名了,现在叫{新名字}"); 名字 = 新名字; }
	public void 自我介绍() {
    Console.WriteLine($"大家好我叫{名字},今年{年龄}岁了"); }
}

那么,对于不能直接访问的两个私有变量如何赋初始值?
并且我们希望这种直接赋值只进行一次。


构造方法

构造方法的使用:

人 a = new() ;

这个 人() 就是构造方法。记得么,带括号的都是在调用方法。
如果调用的构造方法正好是声明类型的构造方法,那么方法名可以省略

这种方法只在创建对象时被调用一次。并且他的作用大多是为对象赋初始值


构造方法的声明:
构造方法的声明方式为将方法名写得和类名一样,并且不要加返回类型

  1. 如果你的自定义类没有自己写的构造函数,那么系统也会自动生成一个公开的,无参的,空的构造函数
  2. 在你亲自声明一个构造方法后,系统便不会再自动生成默认构造函数
  3. 即便构造函数应该是被外部使用的,如果你声明时没有加public,系统也不会自动加
  4. 构造函数没有返回值,因为构造函数返回的一定是他自己这个类型。不允许修改
  5. 为什么说没有返回值而不是没有名字。因为在构造函数中不能主动用return返回值。和无返回的方法具有相同性质
  6. 构造函数执行完毕后仍未赋值的变量才会使用预先定义的初始值。也就是说以构造函数赋值为准。

成员变量是无序的,像这种有序的赋值就不行。这种类型的赋值也只能在构造方法中进行


对象初始化器

有时我们希望一次性赋值多个可更改的值,但是构造方法却没有给这种功能。
利用对象初始化器可以将调用构造函数后的多条赋值语句压缩在一起

  1. 使用方式为在括号后面加大括号,并在里面赋值
  2. 这种赋值不需要使用 "a.长"的方式,因为此时a还没有完全创建,初始化器是创建对象的一部分
  3. 初始化器中的语句用逗号隔开。只有完整的语句才用分号
  4. 初始化器的执行后于构造函数。对同一变量赋值时,初始化器会覆盖构造函数的结果
  5. 初始化器同样是在外部访问,也需要访问权限,即不能修改私有的变量

析构方法

和构造函数相反,析构函数是在对象被清除时调用
声明方式:~类名称

析构函数不能被主动调用,因此不能加访问修饰符,不能加返回值,不能加参数。

需要用到析构函数的情景:调用窗口、文件或网络连接
这些情况都需要像系统调用资源,使用析构函数可以告诉系统:我不需要了,中止调用吧。
除此之外的场合,没什么用。并且创建一个析构函数需要消耗性能,空的析构函数会造成不必要的性能损失


转载:https://blog.csdn.net/zms9110750/article/details/116081277
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场