结合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
相关产品推荐
相关产品推荐

