)
一、什么是构造函数构造函数是与类名同名、没有返回值的特殊方法。 在new创建对象时自动执行主要用于给对象字段/属性做初始化赋值。核心规则方法名必须和类名完全一致不能写void只能new的时候自动调用不能手动调用写了带参构造编译器就不再自动生成默认无参构造。public class Account { //带参构造函数 public Account(string id,string name,decimal balance) { AccountId id; OwnerName name; Balance balance; } public string AccountId { get; set; } public string OwnerName { get; set; } public decimal Balance { get; set; } } //创建对象自动执行构造函数 Account acc new Account(A001,张三,1000);二、构造函数常见类型1. 默认无参构造如果类不写任何构造函数编译器偷偷生成一个public 类名(){}无参构造。⚠️只要手写任意带参构造默认无参构造就消失想要用就得手动写。2. 带参构造函数实例化的时候直接传入初始数据项目开发最常用。3. 构造函数重载一个类可以有多个构造函数参数列表不同即可构成重载。public Account(){} public Account(string id):this(id,未知,0){} public Account(string id,string name,decimal balance){}4. this()调用本类其他构造this(参数)调用当前类别的其他构造必须放在第一行减少重复代码。public Account(string id):this(id,匿名用户,0) { }三、继承中的构造函数 base()【重点】创建子类对象时会先调用父类构造再执行子类构造。如果父类没有无参构造子类必须用base(参数)显式调用父类带参构造否则编译报错。base()同样只能写在构造函数第一行。银行账户案例抽象父类子类public abstract class Account { public string AccountId { get; set; } public string OwnerName { get; set; } public decimal Balance { get; set; } //父类带参构造没有无参构造 public Account(string id, string name, decimal balance) { AccountId id; OwnerName name; Balance balance; } } //储蓄账户子类 public class SavingsAccount : Account { public double Rate { get; set; } //base调用父类构造把公共参数传给父类 public SavingsAccount(string id, string name, decimal balance, double rate) : base(id, name, balance) { Rate rate;//子类自己独有的字段初始化 } }抽象类不能new实例但可以写构造函数专门供子类通过base调用。四、执行顺序父类实例构造 → 子类实例构造静态构造函数优先执行整个程序生命周期只跑一次。五、高频踩坑小结写了带参构造无参构造就没了需要就手动添加继承父类只有带参构造子类必须写base(xxx)this()和base()只能写在构造函数第一行构造函数不能加virtual、override、static修饰构造函数尽量只做初始化不要写复杂业务逻辑。六、小总结构造函数是面向对象初始化的核心this()调用本类其他构造base()子类调用父类构造抽象类可以有构造服务子类继承初始化。文章到这里如果对你有帮助欢迎点赞收藏~