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

C#使用[]初始化List在NET48与NET6.0项目编译失败问题

问题原因与解决方案

核心原因

你使用的private List<string> Names = [];是C# 12引入的集合表达式语法,但你的项目默认配置的C#语言版本不支持该特性,因此无论编译net48还是net6.0都会触发报错:

  • .NET 6默认最高支持C# 10,本身不兼容C# 12的集合表达式语法
  • .NET Framework 4.8默认最高支持C# 7.3,同样无法识别该语法

解决办法

方法1:升级项目的C#语言版本

在项目的PropertyGroup中添加<LangVersion>12</LangVersion>配置,强制启用C# 12支持,修改后的项目配置如下:

<PropertyGroup>
    <TargetFrameworks>net48;net6.0</TargetFrameworks>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <LangVersion>12</LangVersion>
</PropertyGroup>

注意事项:

  • 需安装.NET 7及以上版本的SDK,才能让.NET 6项目支持C# 12特性
  • .NET Framework 4.8可通过高版本SDK支持C# 12,但部分依赖高版本框架API的特性无法运行,不过集合表达式初始化List的场景是兼容的

方法2:改用低版本C#兼容写法

如果不想升级语言版本,直接替换为所有目标框架都支持的初始化代码:

private List<string> Names = new List<string>();

补充说明

C#版本与.NET框架版本并非严格绑定,高版本.NET SDK可让低版本框架项目使用更高版本的C#特性(只要特性不依赖高版本框架专属API)。若开发环境未安装支持C# 12的SDK,即使设置了LangVersion也会报错,需先升级SDK。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:02:05