If else If在while循环中If else If在第一个循环中定义了test
本文关键字:If 循环 else test 第一个 while 定义 | 更新日期: 2023-09-27 18:08:57
有点令人困惑,特别是当试图在标题中描述时。下面是一些示例代码。我希望这是可能的(我还没有找到一个方法来做到这一点。)
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语句第一次为真,之后的每一次都为假。我绝对愿意接受不同的方法。
如果您很好奇,我们的目标是在一个服务中运行它,它在不同的时间间隔内一次运行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
}
}