c#-如果else在while循环中则为else如果在第一个周期中定义了test
作者:互联网
有点令人困惑,尤其是在尝试描述标题时.这是一些示例代码.我希望这是可能的(我还没有找到一种方法来做.)
DateTime startTime = DateTime.Now;
int i = 0;
bool running = true;
while (running)
{
DateTime? lastRunTime = null;
if (i == 0)
{
if ((DateTime.Now - startTime).Minutes >= Program.genTimer)
{
i = 1;
lastRunTime = DateTime.Now;
}
}
else if ((DateTime.Now - lastRunTime).Minutes >= Program.genTimer)
{
//doestuff
}
这可能看起来很愚蠢(并且根本不起作用,明显的是可为空的时间范围不包含“分钟”的定义.我也尝试过
DateTime lastRunTime;
代替
DateTime? lastRunTime = null;
因此,基本上我是在第一次将第一个if语句强制为true,之后每次通过都为false.我绝对愿意接受其他方法.
如果您感到好奇,那么我们的目标是在一项服务中运行该服务,该服务在不同的时间间隔一次运行11次操作.由于这些操作的处理方式,一次最多只能运行一次.
解决方法:
如果您使用的是可为空的DateTime,则可能根本不需要i. .HasValue会告诉您是否已设置.第一次只会是假的.还要将其移出while循环,否则每次都需要重新声明.
尝试类似
DateTime startTime = DateTime.Now;
bool running = true;
DateTime? lastRunTime = null;
while (running)
{
if (!lastRunTime.HasValue)
{
if ((DateTime.Now - startTime).Minutes >= Program.genTimer)
{
lastRunTime = DateTime.Now;
}
}
else if ((DateTime.Now - lastRunTime.Value).Minutes >= Program.genTimer)
{
//doestuff
}
}
标签:while-loop,if-statement,nullable,datetime,c 来源: https://codeday.me/bug/20191119/2039316.html