我有一個財產收到int
,每個獲得數字將返回int
,然後我需要增加一個int
。
如果我這樣做:C#返回int並增加返回值
public int Number
{
set;
get
{
Number++;
return Number;
}
}
它不是好的,因爲如果我有7000開始,它將與7001
我怎麼能恢復後增加開始?
我可以使用return Number++;
嗎?
我有一個財產收到int
,每個獲得數字將返回int
,然後我需要增加一個int
。
如果我這樣做:C#返回int並增加返回值
public int Number
{
set;
get
{
Number++;
return Number;
}
}
它不是好的,因爲如果我有7000開始,它將與7001
我怎麼能恢復後增加開始?
我可以使用return Number++;
嗎?
我會避免這樣做。
關於屬性的第一個最佳實踐是一致性,即當調用getter時,您的proprety不應修改您的類的成員。基本上,多次連續調用getter應該返回相同的值(也有例外,例如DateTime.Now
,但這些都是邊緣情況)。
如果你想計算一個操作(在你的情況下增加),你可能應該使用一個函數。
MSDN來自:
一般而言,方法代表動作和屬性表示數據。 屬性用於字段,這意味着屬性不應該是 計算複雜或產生副作用。
第一個副作用,你可以看到的是,會默默地遞增的情況下你的電話號碼調試器,你有一塊手錶你的財產......
首先,當前的代碼會拋出StackOverflowException
爲什麼?因爲它將返回Number
,但返回Number
它將讀取Number
值。所以它會無限地撥打get
。
二,使用Postfix increment operator來解決你的主要問題。
試試這個:
private int number;
public int Number
{
set { number = value; }
get
{
return number++;
}
}
你甚至嘗試自己的建議嗎? stackoverflow不是你的個人調試器軍隊。 – 2013-03-14 12:29:59