在以下示例中使用get和set属性有什么好处?:
class Program
{
public class MyClass
{
private int age;
public int persons_age
{
get
{
return age;
}
set
{
age = value;
}
}
}
static void Main(string[] args)
{
MyClass homer = new MyClass();
homer.persons_age = 45; //uses the set property
homer.persons_age = 56; //overwrites the value set by the line above to 56
int homersage=homer.persons_age; //uses the get property
Console.WriteLine(homersage);
}
}
这样做和以下之间有什么区别?:
public class MyClass
{
public int age;
}
static void Main(string[] args)
{
MyClass homer = new MyClass();
homer.age = 45;
homer.age = 56; //overwrites the value set by the line above to 56
int homersage=homer.age;
Console.WriteLine(homersage);
}
当上述两个程序的作用完全没有区别时,使用get和set属性有什么好处?与客户端通过某种逻辑检查通过set方法将字段分配给字段的能力有限的情况不同,在这种情况下,我不会看到这里显示的两个程序之间的任何功能差异。
此外,一些编程书使用短语" ...打破客户端代码"如果这些属性不用于类字段。有人可以解释一下吗?
感谢。
答案 0 :(得分:1)
我能想到的一个答案是,使用setter和getter方法,您可以在其中添加检查或验证。与通过声明公开直接访问它不同,检查/验证将落在不同的位置和可能的代码重复。 例如:
public class MyClass
{
private int age;
public int persons_age
{
get
{
return age;
}
set
{
if(value > 0)
age = value;
else
//do something here
}
}
}
这样就可以定义对象的约束。