c#:让一个字段只能被包含它的类修改

本文关键字:包含它 修改 字段 一个 | 更新日期: 2023-09-27 18:08:56

我确定这个问题之前已经问过了,我只是不知道正确的表达方式,所以我找不到我要找的东西。

我有一个类,我想从外部看到一个字段,只是不能直接修改它。

public class myclass
{
    public int value;
    public void add1()
    {
        value = value + 1;
    }
}

所以我真的想只有'value'字段可修改从方法add1(),但我仍然希望能够看到'value'的值。

编辑:我认为只能通过类myclass修改,但我键入其他。谢谢你指出来

c#:让一个字段只能被包含它的类修改

public int value { get; private set; }

不能通过add1方法修改,但可以通过myclass方法修改

看到这个:https://msdn.microsoft.com/en-us/library/75e8y5dd.aspx

请考虑以下选项来封装字段(即为私有字段值提供一个"interface"):

  1. 提供公共方法(accessor):

    // ...
    private value;
    // ...
    public void Add()
    {
        ++value;
    }
    public int GetValue()
    {
       return value; 
    }
    
  2. 提供公共属性(唯一访问器):

    // ...
    private value;
    // ...
    public void Add()
    {
        ++value;
    }
    public int Value
    {
       get { return value; }
    }
    
  3. 提供自动实现的属性(public accessor, private mutator):

    // ...
    // The field itself is not needed: private value;
    // ...
    public void Add()
    {
        ++Value;
    }
    public int Value { get; private set; }
    

值得注意的是,一些ide或ide插件提供了适当的重构,称为"封装字段"。

您可以使用不带setter的公共属性从外部查看value。将value设置为私有,使其仅在类中可见。

public class myclass
{
    private int value;
    public void add1()
    {
        value = value + 1;
    }
    public int Value
    {
       get
       {
           return value; 
       }
    }
}