我刚开始学习C#,在getter和setter简写方面有些困难。
据我了解,下面两种方法是等价的。这是正确的吗?
//Method 1
public string name { get; set; }
//Method 2
private string name
public string getName() { return name;}
public string setName(string newName) { this.name = newName; }
其次,如果我们希望getter/setter和实例变量具有不同的访问修饰符,该怎么办呢?下面的代码会报错,告诉我访问器必须比属性更严格,并且我不能为两个访问器指定修饰符。能否有人澄清一下?
private int maxTime { public get; public set; }
编辑:澄清一下,我没有具体的目标,只是想了解。我不明白这个速记符号是做什么用的。在其他语言中,我有私有实例变量并使用公共的getter和setter来管理这些实例变量。如果我自己编写方法,它允许这样做,但是不能使用此速记符号。为什么会这样?
编辑2:最后一个问题,以检查我的理解。以下两个代码片段都使用属性来管理maxTime变量。它们之间唯一的区别是样式。这个说法正确吗?
private int maxTime;
public int MaxTime{ get; set; }
vs
private int maxTime;
public int MaxTime
{
get { return maxTime; }
set { maxTime= value; }
}
public
作为get
/set
级别是多余的;具有protected
或private
set
的public
属性可能会很有用。在 C# 中有许多处理属性的方法,因此,仅说明您打算执行的操作,并不要陷入比较其他语言和功能等效性的泥潭,这样会得到更好的答案。 - Grant Thomas