You need to enable JavaScript to run this app. C#分部类带参构造函数未调用同类无参构造函数问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

C#分部类带参构造函数未调用同类无参构造函数问题咨询

问题结论

这段代码完全符合C#语法规范,编译不会报错,问题出在你对构造函数链式调用关键字的理解有误。

核心原因

你在带参构造函数后写的: base()作用是调用当前类父类(默认是System.Object)的无参构造函数,而非调用当前类自己定义的无参构造函数。
如果需要在带参构造执行前先触发当前类的无参构造,需要将base()修改为this(),this()才是指代当前类自身的构造函数的关键字。

修复示例

只需要修改MyClass2.cs中的构造函数声明即可:

namespace ConsoleApp
{
  public partial class MyClass
  {
    // 把base()改成this(),触发当前类的无参构造
    public MyClass(string nothing) : this()
    {
    }
  }
}

修改后运行程序,Name属性会被正确赋值为base,无参构造的断点也会正常命中。

补充规则

  • C#中所有类的构造函数如果没有显式声明:this()或:base(),默认会隐式追加:base(),也就是自动调用父类的无参构造
  • partial类拆分到多个文件中时,构造函数的调用逻辑和普通单文件类完全一致,没有特殊限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 00:45:03