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

如何在C# 12中使用主构造函数体?解决.NET 8编译报错

C# 12主构造函数体编译失败的解决方法

问题根源

你碰到的编译错误,是因为所用的.NET 8 SDK版本对C# 12的主构造函数初始化块支持不足,或是项目未正确配置C# 12语言版本。

正确使用方案

1. 强制项目启用C# 12

打开项目的.csproj文件,添加或修改语言版本配置:

<PropertyGroup>
  <LangVersion>12.0</LangVersion>
</PropertyGroup>

2. 调整初始化逻辑的写法

如果SDK版本仍不支持独立的初始化块,可通过以下两种方式修改代码:

方式一:显式实现主构造函数

把校验逻辑放到显式的主构造函数实现中:

public class C(int i, string s) : B(s)
{
    public C(int i, string s) : this(i, s)
    {
        if (i < 0) throw new ArgumentOutOfRangeException(nameof(i));
    }

    int[] a = new int[i];
    public int S => s;
}

方式二:整合校验到字段初始化

将参数校验逻辑直接合并到字段初始化语句里:

public class C(int i, string s) : B(s)
{
    int[] a = i >= 0 ? new int[i] : throw new ArgumentOutOfRangeException(nameof(i));
    public int S => s;
}

3. 更新.NET 8 SDK到最新补丁版

微软在.NET 8的后续更新中完善了C# 12特性的兼容性,更新到最新SDK后,就能直接使用原始示例中的写法。

内容的提问来源于stack exchange,提问作者אפרת

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:05:01