【问题标题】:use of unassigned local variable `total`使用未分配的局部变量“total”
【发布时间】:2011-10-24 11:38:17
【问题描述】:

我想要所有区间的总和,但是我写了这段代码我有一个错误说明:使用未分配的局部变量total

enter TimeSpan total;
foreach (var grp in query)
{
  TimeSpan interval = TimeSpan.FromMinutes(grp.Minuut); 
  TimeSpan intervalH = TimeSpan.FromHours(grp.Sum);

  interval = interval + intervalH;
  total += interval;
  string timeInterval = interval.ToString();   
  dataGridView2.Rows.Add(i++, grp.Id, grp.Sum, grp.Minuut,timeInterval);
}

【问题讨论】:

  • 您上次的编辑破坏了您的格式,enter TimeSpan 部分毫无意义。你能恢复或修复它吗?
  • 在添加 'interval' 之前声明并初始化 'total'

标签: c# local-variables unassigned-variable


【解决方案1】:

开始于:

TimeSpan total = TimeSpan.Zero;

增加一个没有值的变量是没有意义的。所以这是很自然的编译器错误。

虽然 fields 被初始化为 0,但局部变量必须在首次读取之前分配给它们。在您的程序中 total += interval; 读取 total 以增加它。因此,在循环的第一次迭代中,它不会被赋值。

【讨论】:

    【解决方案2】:
    total += interval;
    

    当 total 根本没有分配值时是错误的...你还要添加区间吗?

    【讨论】:

    • 我只想在我的 datagridview 中拥有所有行的总数,该列填充了时间跨度。
    • @Nick_BE 只需将其初始化为 0。或者无论默认 C'tor 是什么。
    【解决方案3】:

    您应该在使用前初始化总值

     TimeSpan total = new TimeSpan();,
    

    那么代码应该可以工作了。

    【讨论】:

      【解决方案4】:

      没有任何初始值分配给总计。使用前必须先赋值。

      【讨论】:

      • 时间跨度总计 = 新时间跨度(0);是我需要的
      猜你喜欢
      • 2013-10-18
      • 2015-11-09
      • 2012-05-18
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多