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

结合C#9/C#10特性如何最简编写指定属性,能否省略backing字段?

最简编写形式

结合C# 9及以上的表达式体访问器语法,配合编译器的泛型类型推断能力,原有属性可以精简为以下形式:

private string fName;
public string Name
{
    get => fName;
    set => SetPropertyValue(nameof(Name), ref fName, value);
}

和原代码相比,去掉了冗余的{ return ... }、{ ... }块写法,同时省略了SetPropertyValue后显式声明的<string>泛型参数,编译器会自动根据参数类型完成推断。

能否省略后台字段

不可以。
你用到的SetPropertyValue方法需要通过ref关键字传递后台字段的引用,用于修改字段值以及实现后续的属性变更通知逻辑。而自动属性的后台字段是编译器隐式生成的,无法在业务代码中直接获取到它的引用,自然没办法传递给ref参数,所以必须显式声明后台字段,无法省略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:36:03