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

C#(.NET 4.6)表达式体属性声明的读写性歧义问题

C#表达式体属性的只读/可读写区分

嘿,这个问题其实很明确——public bool a => _a;的实现完全等价于public bool a { get => _a; },也就是只读属性,外部只能读取它的值,根本没法对它进行赋值操作。

我来给你理清楚背后的逻辑:

  • 这种单一=>的属性写法是C# 6及以后版本引入的简化语法,专门用来定义只读属性。它本质上就是把只读属性的get访问器用表达式体的方式做了简写,完全没有隐含的set访问器。
  • 如果想要属性支持可读可写,你必须像第二种写法那样,明确把get和set的表达式体都声明出来,或者用传统的属性语法来定义。

你甚至可以自己验证一下:如果在代码里尝试写var t = new test(); t.a = false;,编译器会直接报错,提示“属性或索引器'test.a'不能赋值,因为它是只读的”,这就实锤了它只有get访问器的特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:27:36