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

C#是否支持在构造函数参数中声明并赋值字段的语法糖?

问题描述

我试图回忆一个C#语言特性,但有段时间没接触C#了,记不清确切语法也找不到相关文档。该特性是一种简写语法,可在构造函数参数中声明字段或属性,并在同一语句中将构造函数参数赋值给该字段。我记得是在.NET Core Azure Functions依赖注入场景中使用的,不确定是否特定于.NET Core、Azure或依赖注入框架。

我印象中的写法类似:

class MyClass
{
  public MyClass(private IMyDependency thingy = null)
  {
    ...
  }
}

这段代码等价于:

class MyClass
{
  private readonly IMyDependency _thingy;

  public MyClass(IMyDependency thingy)
  {
    this._thingy = thingy;
  }
}

请问该特性是否真实存在?是否已被移除?还是我记错了?若真实存在,其语法是什么,名称是什么?


解答

这个特性真实存在,它是**C# 12引入的主构造函数(Primary Constructors)**扩展特性(C# 9时仅支持record类型,C# 12将其扩展到普通类和结构体)。

你记忆中的语法有误,正确的写法是直接在类声明后定义主构造函数参数,并通过访问修饰符指定生成的字段/属性的可见性,示例如下:

class MyClass(private IMyDependency thingy)
{
    // 可直接使用thingy,编译器会自动生成private readonly字段并完成赋值
}

这段代码完全等价于你给出的传统手写字段+构造函数赋值的写法。

该特性并未被移除,属于C# 12及以后版本的正式语言特性,和.NET Core、Azure Functions或依赖注入框架无关——不过在依赖注入场景中它确实被广泛使用,因为能大幅简化依赖注入的构造函数代码。


内容的提问来源于stack exchange,提问作者I V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:02:44