admin 发表于 2025-8-8 16:58:32

构造函数重载 调用: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]
查看完整版本: 构造函数重载 调用:this 这样省略每次都写赋值操作,造成代码冗余