计算.Net中的比较

时间:2013-04-26 06:36:33

标签: c# .net

我在c#中编写了一个方法来获取表的计数,并将计数保存在设置属性中。

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.我会将它保存在设置中,我不会比较之前的计数。第二次我想比较当前计数与设置中先前保存的计数。上述方法应首次分配当前计数。但第二次它比较糟糕。

提前感谢。

3 个答案:

答案 0 :(得分:2)

首先,考虑如果参数为int?,当您将int投放到null时会发生什么。如果以后不对它执行任何操作,则使用可为空的参数没有意义。您应该将参数类型更改为int,或者您可以执行此操作:

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

然后,该方法将始终返回true,因为if条件始终为false - 请记住您将Properties.Settings.Default.Count设置为currentCount上面只有两行?那么它应该如何大于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;
    }
}   

答案 1 :(得分:1)

询问当前发现的Count是否等于默认值(零,或找不到或设置自己一旦找不到,请说-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;
}   

答案 2 :(得分:1)

实施它有什么问题?你已经拥有了所有的块。只需正确重新排序。

如果问题是默认设置中定义的“int Count”是“0”,你可以改变它,即默认为-1,所以它显然不是之前写的Count。或者,您可以将其更改为int?以使其具有默认值。