我在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.我会将它保存在设置中,我不会比较之前的计数。第二次我想比较当前计数与设置中先前保存的计数。上述方法应首次分配当前计数。但第二次它比较糟糕。
提前感谢。
答案 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?
以使其具有默认值。