3

すべての interval の合計を取得したいのですが、次のコードを書くとエラーが発生します: use of unassigned local variable 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);
}
4

4 に答える 4

7

皮切りに:

TimeSpan total = TimeSpan.Zero;

値のない変数をインクリメントしても意味がありません。したがって、これがコンパイラ エラーであることは当然です。

フィールドは 0に初期化されますが、ローカル変数は最初に読み取られる前に割り当てる必要があります。あなたのプログラムでは、それをインクリメントするためにtotal += interval;読み取ります。totalしたがって、ループの最初の反復では、値が割り当てられませんでした。

于 2011-10-24T11:42:12.947 に答える
1

使用前に合計値を初期化する必要があります

 TimeSpan total = new TimeSpan();,

その後、コードが機能するはずです。

于 2011-10-24T11:42:49.237 に答える
1
total += interval;

合計に値がまったく割り当てられていない場合は間違っています...間隔も何を追加しますか?

于 2011-10-24T11:40:16.493 に答える
0

total に初期値が割り当てられることはありません。使用する前に値を割り当てる必要があります。

于 2011-10-24T11:41:41.473 に答える