2013-04-26 60 views
0

我已經在c#中編寫了一個方法來獲取表的計數,並將計數保存在設置屬性中。.Net中的計數比較

public static bool CompareCount(int? currentCount) 
{ 

    Properties.Settings.Default.Count = (int)currentCount; 
    Properties.Settings.Default.Save(); 
    if (currentCount < Properties.Settings.Default.Count) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

在第一時間,如果返回的數爲20,我將它保存在設置和我shud比不上室內用的是前一計。第二次打開時,我想比較當前計數與設置中先前保存的計數。上述方法應該首次分配當前計數。但第二次它不寒而慄。

在此先感謝。

+1

那麼什麼是你的問題? – JLRishe 2013-04-26 06:57:46

回答

1

詢問當前發現的計數以檢查它是否等於默認值(零,或未找到或設置您自己的一次未找到,比如說-1),因此一旦找不到,您不要比較其他值。

例如:

public static bool CompareCount(int? currentCount) 
{ 
    int foundCount = ReadFoundCountFromProperties; 
    if (foundCount != 0) 
    { 
     Properties.Settings.Default.Count = (int)currentCount; 
     Properties.Settings.Default.Save(); 
     if (currentCount < foundCount) 
     return false; 

     return true; 
} 
+0

條件將永遠是錯誤的權利?因爲currentCount在比較之前分配給屬性。 'Properties.Settings.Default.Count =(int)currentCount'。所以'currentCount 2013-04-26 06:49:05

+0

Iv更新了我的答案。 – CloudyMarble 2013-04-26 06:55:29

1

什麼是實現它你的問題?你已經擁有了所有的街區。只需重新排列它們。

如果問題是默認情況下設置中定義的「int Count」爲「0」,您可以更改它,即默認爲-1,因此它顯然不會是之前編寫的Count。或者,你可以把它改成int?有默認爲空..

2

首先,想想當你投放的是進來的int如果參數是nullint?會發生什麼。如果以後不做任何事情,那麼使用可空參數是沒有意義的。您應該參數類型更改爲int或者你可以這樣做:

Properties.Settings.Default.Count = currentCount ?? 0; 

然後,該方法將總是true,作爲if條件始終false - 記住你設置Properties.Settings.Default.CountcurrentCount剛那兩條線?那麼它應該如何比currentCount大?

您需要自己定義如何確定「第一次」和「第二次」。發現該方法是否第一次運行的條件是什麼?對於下面的代碼,我將假設Properties.Settings.Default.Count有一些默認值可幫助您確定該方法是否第一次運行。

然後,你說什麼,你的代碼應該是這樣的:

public static bool CompareCount(int? currentCount) 
{ 
    int countValue = currentCount ?? 0; 

    if (Properties.Settings.Default.Count == <some default value>) 
    {  
     Properties.Settings.Default.Count = (int)currentCount; 
     Properties.Settings.Default.Save(); 
    } 
    else 
    { 
     return currentCount >= Properties.Settings.Default.Count; 
    } 
} 
+0

+1你的解釋比我簡短的解釋更好,更清晰。如果我的輸入丟失或遺漏,我強烈建議該問題的作者要麼將'Properties ... Count'從'int'更改爲'int?',以便自動缺省值爲null,並且在應用程序時很明顯是首次啓動,或者手動將默認值設置爲負值,因此它同樣易於檢測(儘管對某些人來說不太明顯)。我認爲**很少**傳入的'currentCount'會是負數;-) – quetzalcoatl 2013-04-26 07:40:08