0

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

提前致谢。

4

3 回答 3

2

首先,考虑一下int?如果int参数是null. 如果您以后不对其进行任何操作,则使用可为空的参数是没有意义的。您应该将参数类型更改为,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;
    }
}   
于 2013-04-26T06:49:44.547 回答
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;
}   
于 2013-04-26T06:40:49.367 回答
1

您在实施过程中遇到什么问题?你手头已经有了所有的积木。只需正确重新排序即可。

如果问题是设置中定义的“int Count”默认为“0”,您可以将其更改为默认为-1,因此它显然不是之前编写的 Count。或者,您可以将其更改int?为默认为 null ..

于 2013-04-26T06:42:55.010 回答