if else if in while 循环 were else if test 在第一个循环中定义
if else if in while loop were else if test is defined in the first cycle
有点混乱,尤其是在尝试用标题描述时。这是一些示例代码。我希望这是可能的(我还没有找到方法。)
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 次操作在不同的时间间隔进行一次操作。由于这些操作的处理方式,我一次不能超过一个 运行。
如果您使用的是可为 null 的日期时间,则可能根本不需要 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
}
}
有点混乱,尤其是在尝试用标题描述时。这是一些示例代码。我希望这是可能的(我还没有找到方法。)
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 次操作在不同的时间间隔进行一次操作。由于这些操作的处理方式,我一次不能超过一个 运行。
如果您使用的是可为 null 的日期时间,则可能根本不需要 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
}
}