使字段/属性在类外部可读但不可写

  • 本文关键字:外部 字段 属性 c# class
  • 更新时间 :
  • 英文 :


我有一个类Person,需要有一个属性/字段Age

我希望Age在任何地方都可读,但只有Grow()才能更改它的值。

如果我将Age公开,那么它可以从外部进行修改,所以它对我不起作用。

将其设为私有可以防止从外部读取。

我还试着用get方法将其作为一个自动属性,但后来变量变成了只读的,只能在构造器中设置。

当然,我可以制作Ageprivate并创建一个返回Age的函数int GetAge()

这里的问题是,如果我的类有很多这样的字段,我必须为每个字段创建一个get函数。

使函数int GetAge()成为解决这个问题的唯一方法吗?或者还有其他方法可以让属性或字段在类外可读但不可写?

class Person
{
private int _age;
Person(int age)
{
_age = age;
}
void Grow() 
{
_age++;
}

int GetAge() 
{
return (_age);
}
}

属性可以有单独的读写访问描述符。所以,你的课程可以是:

public class Person
{
public int Age {get; private set; }
public Person(int age)
{
Age = age;
}
public void Grow() 
{
Age++;
}
}

如果您只在构造函数中设置Age,而没有在任何方法中更改它,则可以将其声明为public int Age {get;}

最新更新