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

咨询private int var {get; set;}与public int var {get; private set;}的差异及报错原因

C#两种属性定义的功能区别及报错原因

功能层面的区别

两段代码都是C#的自动属性定义,但访问权限控制完全不同:

  • 第一段代码:
    private int var {get; set;}
    
    整个属性的访问级别是private,只有当前类的内部代码能读取或修改var的值,外部类完全无法访问这个属性。
  • 第二段代码:
    public int var {get; private set;}
    
    属性的get访问器是public,外部类可以自由读取var的值;但set访问器是private,只有当前类内部能修改它的值。这种写法常用于对外暴露只读数据,但内部可以更新的场景。

第一段代码的报错原因

这段代码报错主要源于两点:

  1. 语法规范冗余:C#中自动属性的设计初衷是简化公共/受保护属性的定义,当整个属性标记为private时,直接定义私有字段private int var;更符合语法设计逻辑,部分编译器或IDE会判定这种自动属性写法不符合规范,触发错误。
  2. 未使用的私有成员:如果这个私有属性在类内部没有被任何代码读取或修改,IDE(比如Visual Studio)会触发“未使用的私有成员”编译警告,若开启了“将警告视为错误”的编译选项,就会直接报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:15:58