Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将时间跨度作为双精度输入if语句重新返回_C#_Timespan - Fatal编程技术网

C# 将时间跨度作为双精度输入if语句重新返回

C# 将时间跨度作为双精度输入if语句重新返回,c#,timespan,C#,Timespan,这是我以前关于时间跨度的问题。我想做的事。我试图自动更新我的文本框,然后时间流逝。使用下面的代码,它可以正常工作: public void AutoSaveTimer() { timer = new System.Timers.Timer (); timer.AutoReset= false ; timer.Elapsed += new System.Timers.ElapsedEventHandler (timer_Elapsed); timer .Interval

这是我以前关于时间跨度的问题。我想做的事。我试图自动更新我的文本框,然后时间流逝。使用下面的代码,它可以正常工作:

public  void AutoSaveTimer()
{
   timer = new System.Timers.Timer ();
   timer.AutoReset= false ;
   timer.Elapsed += new System.Timers.ElapsedEventHandler (timer_Elapsed);
   timer .Interval = GetInterval();
   timer.Start ();
}

public  double GetInterval()
{      
   DateTime now = DateTime .Now;
   return ((60-now.Second )*1000-now.Millisecond );
}

public void timer_Elapsed ( object sender ,System .Timers .ElapsedEventArgs e)
{
   UpdateLogDatabase();

   timer .Interval =GetInterval ();
   timer .Start ();
}

private void AutoSaveTimerStop()
{
   timer = new System.Timers.Timer();
   timer.Stop();
}
但是,如果我试图检查if语句中的用户选项,则该方法不会返回double,我将得到一个错误:使用未赋值变量

  public double GetInterval()
  {
      double d;
      DateTime now = new DateTime();

      if (cb5Min.Checked== true)
      {
          d= ((60 - now.Second) * 1000 - now.Millisecond);
      }
      else if (cb15Min.Checked)
      {
          d= ((900 - now.Second) * 1000 - now.Millisecond);
      }
      return d;
  }
谢谢你的回复

我得到一个错误:使用未赋值变量

  public double GetInterval()
  {
      double d;
      DateTime now = new DateTime();

      if (cb5Min.Checked== true)
      {
          d= ((60 - now.Second) * 1000 - now.Millisecond);
      }
      else if (cb15Min.Checked)
      {
          d= ((900 - now.Second) * 1000 - now.Millisecond);
      }
      return d;
  }
您正试图从方法返回变量
d
,您已经声明了它,但尚未初始化它,初始化是在if块中完成的,编译器无法确定是否会到达该部分代码。因此,如果您可以为
d
指定一些默认值,则效果更好,如:

double d = 0;
或者在您的代码中,您可以使用另一个else块来确保
d
在返回之前被初始化为某个值

我得到一个错误:使用未赋值变量

  public double GetInterval()
  {
      double d;
      DateTime now = new DateTime();

      if (cb5Min.Checked== true)
      {
          d= ((60 - now.Second) * 1000 - now.Millisecond);
      }
      else if (cb15Min.Checked)
      {
          d= ((900 - now.Second) * 1000 - now.Millisecond);
      }
      return d;
  }

尝试了解编译器错误。如果未选中这两个复选框,则返回未分配的
d
。您最好在声明的位置初始化
d
,例如,将其初始化为
0

该错误表示两个if计算都失败,即cb5Min.Checked和&cb15Min.Checked==错误地将双d初始化为0.0。我猜您错误地将两个条件(if…else)设置为相同(true)程序执行结束时,返回“d”作为未分配。是吗?我试图设置为0;我发现一个错误:“0”不是“Interval”的有效值“间隔”必须大于0。@user2064345,这是一个异常,而不是一个错误。另外,我认为您需要重新检查代码,确保获得了一些间隔,当前两种情况下的if语句都失败了,这就是为什么您没有获得正确的计时器间隔的原因我这样做了,但它再次抛出异常(复选框被选中):if(cb5Min.checked&&cb15Min.checked==false)@用户2064345,不能将
0
设置为计时器间隔,这就是异常的原因。在方法
GetInterval
中,没有为
d
获取正确的值,请修复方法以返回正确的值,或者为
d
指定一个大于0的默认值;我尝试设置为0;我发现一个错误:“0”不是“Interval”的有效值“间隔”必须大于0。