编辑
2026-06-16
编程语言
00

目录

构造函数:
基本概念:
结构体和class构造函数对比
类是可以声明无参构造函数,但结构体必须有参数:
结构体必须要把所有字段初始化,但class甚至可以一个都不初始化:
class构造函数可以重载,结构体就不可以.
构造函数特殊写法:
析构函数:

构造函数:

基本概念:

image.png

构造函数

  1. 没有返回值
  2. 函数名字要类名相同
  3. 没有特殊需求都是public
  4. 构造函数可以重载

提示

如果没有构造函数他会默认声明一个无参构造函数。

结构体和class构造函数对比

类是可以声明无参构造函数,但结构体必须有参数:

class Person { public int Id; public Person() { Id = 1; } } struct Person2 { public int Id; public Person2(int a) { Id = a; } }

结构体必须要把所有字段初始化,但class甚至可以一个都不初始化:

js
class Person { public int Id; public string Name; public Person() { } } struct Person2 { public int Id; public string name; public Person2(int a) { Id = a; name = "leemoon"; } }

class构造函数可以重载,结构体就不可以.

class Person { public int Id; public string Name; public Person() { } public Person(int a) { } }

构造函数特殊写法:

通过对比来观察:

public int Id; public string Name; public Person() { }//无参的构造函数 public Person(int id) { Id = id; }//一个参数的构造函数(构造函数重载) public Person(int id, string name) { Id = id; Name = name; }//两个参数的构造函数。

特殊写法:

public Person(string id):this() { Id = id; }//后面的this会调用第一个无参的重载构造函数。
public Person(int id, string name):this(id) { Id = id; Name = name; }//这样则是调用,一个参数的重载函数。也就是第二个重载函。参数是从前面的int id传入this的id. public Person(int id, string name):this(id+10) { Id = id; Name = name; } this里的参数甚至还可以拿来运算。

现在有个问题:如果是无参数的重载构造函数想调用有参呢?

public Person() :this(10,"leemoon") { }//因为前面部分不能传入参数所以,可以在this里设置一个常量的默认参数。

析构函数:

起到一个承上启下的作用:

image.png

本文作者:Leemoon

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!