2013-03-14 146 views
-3

我有一個財產收到int,每個獲得數字將返回int,然後我需要增加一個int
如果我這樣做:C#返回int並增加返回值

public int Number 
    { 
     set; 
     get 
     { 
      Number++; 
      return Number; 
     } 
    } 

它不是好的,因爲如果我有7000開始,它將與7001
我怎麼能恢復後增加開始?

我可以使用return Number++;嗎?

+4

你甚至嘗試自己的建議嗎? stackoverflow不是你的個人調試器軍隊。 – 2013-03-14 12:29:59

回答

2

我會避免這樣做。

關於屬性的第一個最佳實踐是一致性,即當調用getter時,您的proprety不應修改您的類的成員。基本上,多次連續調用getter應該返回相同的值(也有例外,例如DateTime.Now,但這些都是邊緣情況)。

如果你想計算一個操作(在你的情況下增加),你可能應該使用一個函數。

MSDN來自:

一般而言,方法代表動作和屬性表示數據。 屬性用於字段,這意味着屬性不應該是 計算複雜或產生副作用

第一個副作用,你可以看到的是,會默默地遞增的情況下你的電話號碼調試器,你有一塊手錶你的財產......

7

首先,當前的代碼會拋出StackOverflowException

爲什麼?因爲它將返回Number,但返回Number它將讀取Number值。所以它會無限地撥打get

二,使用Postfix increment operator來解決你的主要問題。

試試這個:

private int number; 

    public int Number 
    { 
     set { number = value; } 
     get 
     { 
      return number++; 
     } 
    } 
+0

感謝您的回答 – ilansch 2013-03-14 12:31:12

+0

不編譯,您不能將自動屬性與手動創建的屬性混合。 – ken2k 2013-03-14 12:33:42

+0

@ ken2k:我剛剛編輯了我的答案。 – 2013-03-14 12:35:47