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

能否在.NET Framework 4.8及.NET Standard 2.0中使用C#11的required修饰符?

在.NET Framework 4.8/.NET Standard 2.0中使用C#11的required修饰符(VS2022 17.4)

可行,具体操作如下:

  1. 切换项目语言版本到C#11
    右键项目→属性→生成→高级,将「语言版本」设置为C# 11。VS2022 17.4原生支持C#11,无需额外升级编译器。

  2. 补充必要的属性定义(或安装NuGet包)
    .NET Framework 4.8和.NET Standard 2.0没有内置C#11 required修饰符依赖的RequiredMemberAttribute与CompilerFeatureRequiredAttribute,有两种解决方式:

    • 手动定义属性:在项目中添加以下代码,编译器仅需这些属性的存在即可正常处理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) => FeatureName = featureName;
              public string FeatureName { get; }
              public bool IsOptional { get; set; }
          }
      }
      
    • 安装NuGet包:通过NuGet安装System.Runtime包(版本≥6.0),该包包含上述属性的官方实现。

完成后,就能正常使用required修饰符,编译阶段会强制要求初始化时为标记的成员赋值,基础场景(如对象初始化器、构造函数初始化)在两个框架下均可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:10:24