2016-07-19 16 views
0

就像我上面的問題,我想知道它。可以使用Attributes來記住變量的舊值嗎?

想要我想要做的就是讓我的生活更輕鬆,如果我正在使用值來檢查更改。如果有許多變量,所以我必須使總是重複的變量,如:

health = 100; 
oldHealth = health; // this should be in the attribute class for example 

這讓我瘋狂。所以我試圖做出屬性,但我真的不知道如何知道變量何時發生變化。我想我需要一直循環自己,或者它有任何事件嗎?在需要改變之前還需要讀取當前值。

+0

屬性並不意味着知道他們裝飾的項目,他們向成員添加信息,但他們不知道它。通過反思,你可以得到屬性知道它處理什麼,但它的第一個目的是提供有關班級表現的額外信息。 – Everts

+0

[Attributes](https://msdn.microsoft.com/en-us/library/mt653979.aspx)是用於另一個目的。不要在這種情況下使用它們 – Disappointed

+0

它不需要是屬性。只是一個想法。我的另一種方法是用所有類型的課程來創建一個只有當前價值和舊價值的課程。 – MaZy

回答

3

當你只需要知道是否有變化,並在這種情況下,你需要「舊」的價值。只需使用標準屬性實現:

int _health; 
int Health 
{ 
    get {return _health; 
} 
set { 
    // check your "old" value here and do some stuff 
    _health = value; // than asign the new value thats inside the keyword "value" 
} 
+0

不只是。但問題是我仍然需要兩個不同的變量。想象一下它是一個網絡的東西,我不想發送每一幀,如果價值是像以前一樣..身份證,健康,法力,盾牌,裝甲,速度,位置,旋轉和bla ...我將需要所有第二個變量。我需要稍後檢查,如果(健康!= Health.oldvalue)類似的東西。但是這給我帶來了新的想法。我也許可以在set調用中調用一個函數。所以我可以避免循環中的變化條件。但我仍然像以前一樣。我會在所有變量上做到這一點:S – MaZy

+0

使用這種方法,你不會有2個變量,它的1個變量和1個屬性(方法),當你改變這個值時,你可以在「set」部分放一些方法調用,已經改變,需要向客戶提供。否則請查看「inotifypropertychanged」實現。你可以建立你自己的版本。 但也許最好發送mandntory數據的每個滴答信息以防止客戶在滴答內過時。但這取決於你的解決方案:) – Vampirasu

+0

如果它是你的問題的答案,請標記它 – Vampirasu

相關問題