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

如何设置类的field/property仅外部可读、仅类内部指定方法可修改?

解决方案

不是只有GetAge()这一种解决办法,C#支持属性访问器的独立权限修饰,可以直接实现外部只读、类内部可修改的需求,不需要单独为每个字段编写Get方法。

你可以将属性的get访问器设为public,set访问器设为private,即可满足要求:外部代码只能读取属性值,只有类内部的方法(比如你提到的Grow())有权限修改属性值。
示例代码如下:

class Person
{
  // 公开get、私有set的自动属性,不需要手动定义存储字段
  public int Age { get; private set; }

  Person(int age)
  {
    Age = age;
  }

  void Grow() 
  {
    // 类内部可以正常修改Age的值
    Age++;
  }
}

这种写法比单独写GetAge()方法简洁很多,你有多少个这类字段就写多少个对应属性即可,不需要额外实现get逻辑,外部直接通过实例.Age读取值即可。

如果你需要更强的封装限制,避免类内部其他方法误修改字段,也可以保留私有存储字段,只给属性定义get访问器:

class Person
{
  private int _age;
  // 仅公开get访问器,返回私有字段的值
  public int Age => _age;

  Person(int age)
  {
    _age = age;
  }

  void Grow() 
  {
    _age++;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:24:04