构造函数是一种特殊的 方法1 (函数),该方法在 创建对象 时自动执行,它的作用可以理解为在 对象创建 时执行
就像现实世界:
当一个人出生时,他会拥有以下属性:
虽然这些属性是他与生俱来的,但是姓名是什么、年龄是多少岁、身份信息又是什么?这些属性的值都应该在他出生的时候被设定好,设定这些值的函数就是 构造函数
这些“出生就要设置的东西”,在 C# 里就是通过构造函数完成的。
如果没有构造函数,我们创建对象后必须手动赋值:
Person p = new Person();
p.Name = "小明";
p.Age = 18;
这样会导致:
构造函数可以做到:
构造函数的特点:
class Person
{
public Person()
{
Console.WriteLine("对象创建了!");
}
}
使用:
Person p = new Person();
输出:
对象创建了!
这是构造函数最重要的作用。
class Person
{
public string Name;
public int Age;
public Person()
{
Name = "未命名";
Age = 0;
}
}
这样创建对象时就不会是空值。
构造函数也可以接收参数。
这是最常见的用法。
class Person
{
public string Name;
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
创建对象:
Person p = new Person("小明", 18);
这一步是 通过构造函数传入初始化数据
一个类可以有多个构造函数。
只要参数不同即可。
class Person
{
public string Name;
public int Age;
public Person()
{
Name = "默认用户";
Age = 0;
}
public Person(string name)
{
Name = name;
Age = 0;
}
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
这被称为 构造函数重载
你可能会问,如果我不写构造函数会怎么样?
那么 C# 会自动帮你生成一个 无参默认构造函数
例如:
class Person { }
实际上等价于:
class Person
{
public Person() { }
}
⚠️ 请注意,但一旦你写了自己的构造函数,默认构造函数就不会自动生成了。
执行顺序:
new 对象时
↓
分配内存
↓
执行构造函数
↓
对象创建完成
所以 构造函数永远在对象创建时执行
构造函数通常用于:
age = 0;
public Person(Database db)
必须通过 new 才会触发。
绝对没有!
不一样:
| 项目 | 构造函数 | 普通方法 |
|---|---|---|
| 名字 | 必须和类名一样 | 任意 |
| 返回值 | 没有 | 可以有 |
| 调用方式 | 自动执行 | 手动调用 |
构造函数 = 在创建对象时自动执行,用来初始化对象的特殊方法
如果你愿意,我可以帮你直接把 下一整章“对象与实例化”完整写好,而且会把 new 的底层原理讲到让新手“瞬间通透”的程度 👍