我有一个类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;}