RE返回时间跨度为if语句中的double

时间:2013-02-12 11:46:48

标签: c# timespan

重新提出我之前的时间跨度问题。我想做什么。我试图自动更新我的文本框然后时间流逝。并且使用下面的代码它可以正常工作:

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;
  }

感谢您的回复。

2 个答案:

答案 0 :(得分:1)

  

我收到错误:使用未分配的变量。

您正在尝试从您的方法返回变量d,您已声明它但尚未对其进行初始化,初始化在if块中完成,并且编译器无法确定该部分代码是否为到达。因此,如果您可以将一些默认值分配给d,那就更好了:

double d = 0;

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

答案 1 :(得分:1)

  

我收到错误:使用未分配的变量。

尝试学习理解编译器错误。如果未选中这两个复选框,则会返回未分配的d。您最好初始化声明它的d,例如0