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

使用C# required关键字时编译器报错求助

解决C# Preview版Required关键字编译错误的方案

问题根源

你遇到的CS0656错误,是因为required关键字作为C# 11的预览特性,依赖的三个特性类(RequiredMemberAttribute、CompilerFeatureRequiredAttribute、SetsRequiredMembersAttribute)并未包含在当前使用的.NET SDK版本中,编译器找不到这些必要的类型定义。

解决办法

1. 升级.NET SDK到对应预览版本

VS 2022 17.3.1适配的C# 11预览特性需要搭配**.NET 7 Preview SDK**(至少Preview 7及以上)使用:

  • 安装对应版本的.NET 7 Preview SDK
  • 修改项目文件的<TargetFramework>为net7.0,同时保留<LangVersion>preview</LangVersion>配置

2. 手动定义缺失的特性类(临时兼容方案)

如果暂时不想升级SDK,可以在项目中手动添加这些特性类的定义,让编译器识别required语法:

namespace System.Runtime.CompilerServices
{
    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
    public sealed class RequiredMemberAttribute : Attribute { }

    [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
    public sealed class CompilerFeatureRequiredAttribute : Attribute
    {
        public CompilerFeatureRequiredAttribute(string featureName) { }
        public bool IsOptional { get; set; }
        public const string RequiredMembers = "RequiredMembers";
    }

    [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
    public sealed class SetsRequiredMembersAttribute : Attribute { }
}

注意:这只是临时方案,待正式版SDK发布后,需删除这些自定义类,改用SDK内置的官方类型。

3. 验证项目配置

确保项目文件(.csproj)的配置正确无误:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <LangVersion>preview</LangVersion>
  </PropertyGroup>
</Project>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:27:28