我一直認爲屬性就像方法的快捷方式。然而這個例子讓我很奇怪。在我看來,函數changePropertyId和changeMethodId也是這樣做的。然而現實是不同的。只有第二個正常工作。有人可以解釋嗎?屬性設置器不更新後臺字段
class Program
{
static void Main(string[] args)
{
User user = new User();
user.changePropertyId(1);
Console.Write(user.Id);
user.changeMethodId(1);
Console.Write(user.Id);
Console.ReadLine();
}
}
public class DBObject
{
private int mId;
public int Id { set { mId = Id; } get { return mId; } }
public void setId(int aId)
{mId = aId;}
}
public class User : DBObject
{
public void changePropertyId(int aId) { Id = aId; }
public void changeMethodId(int aId) { setId(aId); }
}
第一個函數的結果是0,第二個函數的結果是1.我的意圖是從兩個都得到1。