构造函数重载 调用:this 这样省略每次都写赋值操作,造成代码冗余
在 C#中,this() 是构造函数之间的调用语法,用于在一个构造函数中调用同一个类中的另一个构造函数,这种机制称为构造函数链(ConstructorChaining)。构造函数重载 调用:this 这样省略每次都写赋值操作,造成代码冗余作用
[*]减少代码重复:将多个构造函数的共同初始化逻辑集中到一个构造函数中,其他构造函数通过 this() 调用它
[*]保证初始化一致性:确保对象在任何构造路径下都能得到正确初始化
语法规则
[*]this() 必须是构造函数体内的第一条语句
[*]可以带参数(如 this("默认值")),用于匹配对应参数的构造函数
[*]不能形成递归调用(如 A 调用 B,B 又调用 A)
示列代码:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
// 无参构造函数
public Person() : this("未知", 0)// 调用带两个参数的构造函数
{
// 这里可以添加额外逻辑(可选)
Console.WriteLine("无参构造函数被调用");
}
// 带一个参数的构造函数
public Person(string name) : this(name, 0)// 调用带两个参数的构造函数
{
// 额外逻辑(可选)
}
// 带两个参数的构造函数(核心初始化逻辑)
public Person(string name, int age)
{
Name = name;
Age = age;
Console.WriteLine("带两个参数的构造函数被调用");
}
}调用示例
var p1 = new Person(); // 会先调用 Person("未知", 0),再执行无参构造函数的逻辑
var p2 = new Person("张三"); // 会先调用 Person("张三", 0),再执行对应构造函数的逻辑
var p3 = new Person("李四", 20); // 直接调用带两个参数的构造函数这种写法的优势是:当需要修改初始化逻辑时,只需修改一个核心构造函数,而不是在多个构造函数中重复修改
页:
[1]