首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RE返回时间跨度作为if语句中的双精度值

RE返回时间跨度作为if语句中的双精度值
EN

Stack Overflow用户
提问于 2013-02-12 19:46:48
回答 2查看 258关注 0票数 0

这是我之前关于时间跨度的问题。我想要做的是。我试图自动更新我的文本框,然后时间就过去了。使用下面的代码,它可以很好地工作:

代码语言:javascript
复制
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,我得到错误:使用未赋值的变量。

代码语言:javascript
复制
  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;
  }

感谢您的回复。

EN

回答 2

Stack Overflow用户

发布于 2013-02-12 19:49:37

我收到错误:使用未赋值的变量。

你正试图从你的方法返回你的变量d,你已经声明了它,但还没有初始化它,初始化是在if块中完成的,编译器无法确定这部分代码是否会被访问。因此,如果您可以为d指定一些默认值,效果会更好:

代码语言:javascript
复制
double d = 0;

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

票数 1
EN

Stack Overflow用户

发布于 2013-02-12 19:49:38

我收到错误:使用未赋值的变量。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14831824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档