You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#主构造函数能否同时定义构造函数体?

关于C#主构造函数与构造逻辑的实现

首先你不需要额外定义同签名的次构造函数来添加构造逻辑——主构造函数本身支持直接在类体中编写初始化代码,这些代码会作为主构造逻辑的一部分执行,而且可以直接使用主构造的参数a和b:

public class Thing(int a, int b) {
    // 这里就是主构造的逻辑体,直接用a、b
    Console.WriteLine($"初始化Thing,a={a},b={b}");
    // 其他初始化操作
}

如果需要定义不同参数签名的次构造函数,要注意通过this(...)调用主构造函数,避免签名冲突和递归问题:

public class Thing(int a, int b) {
    // 主构造的初始化逻辑
    var total = a + b;

    // 带单个参数的次构造函数,调用主构造
    public Thing(int singleValue) : this(singleValue, singleValue) {
        // 次构造的额外逻辑
        Console.WriteLine("使用单参数构造初始化");
    }
}

你原来的代码问题在于:定义了和主构造完全相同签名的次构造函数,而且this(a,b)会无限递归调用自身,这是不合法的。不需要用字段中转,直接利用主构造的参数在类体里写逻辑即可。

内容的提问来源于stack exchange,提问作者quetzalcoatulus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 08:47:03