我正在学习C#,并且正在学习如何将字段设为私有,并使用Getters和Setters来公开方法而不是字段值。
方法1 和方法2 中的get; set;
是否相同?例如是另一个的简写吗?
class Student
{
// Instance fields
private string name;
private int mark;
// Method 1
public string Name { get; set; }
// Method 2
public int Mark
{
get { return mark; }
set { mark = value; }
}
}
最后,如果您想在获取或设置值之前执行计算,是否会使用方法2 ?例如将值转换为百分比或执行验证? e.g。
class Student
{
// Instance fields
private string name;
private double mark;
private int maxMark = 50;
// Method 1
public string Name { get; set; }
// Method 2
public double Mark
{
get { return mark; }
set { if ( mark <= maxMark ) mark = value / maxMark * 100; }
}
}
答案 0 :(得分:10)
是,方法1是方法2的快捷方式。我建议默认使用方法1。当您需要更多功能时,请使用方法2.您还可以为get和set指定不同的访问修饰符。
答案 1 :(得分:9)
是的,Method2
是您拥有自定义getter和setter函数的方法。默认情况下,当您使用Method1时,将在内部处理默认的私有属性。有关详细信息,请参阅此URL。
样品:
string _name;
public string Name
{
get => _name;
set => _name = value;
}