ここに簡単なC#コードがあります:
Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
//which brings me 300000
(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0
キャスト(int)結果が異なるのはなぜConvert.ToInt32()ですか?
両方が同じ結果をもたらすべきではありませんか?
ここに簡単なC#コードがあります:
Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
//which brings me 300000
(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0
キャスト(int)結果が異なるのはなぜConvert.ToInt32()ですか?
両方が同じ結果をもたらすべきではありませんか?
最初のバージョンではTotalMillisecondsプロパティを使用しています。2番目のバージョンでは。を使用していますMilliseconds。
キャストや呼び出しを行わずに、より簡単な例を示しConvert.ToInt32ます。
TimeSpan ts = TimeSpan.FromHours(49);
Console.WriteLine(ts.Hours); // 1 (it's two days and one hour)
Console.WriteLine(ts.TotalHours); // 49 (it's 49 hours in total)
ミリ秒は、5秒のミリ秒部分です。2番目のものにもTotalMillisecondsを使用します。
最初の例では、TotalMillisecondsを使用し、次にMillisecondsのみを使用します。
エラーは、2番目の例では、.Millisecondsプロパティではなくプロパティを呼び出していることです.TotalMilliseconds。
前者はミリ秒単位で5分を返します。後者は5分のミリ秒部分を返します。これはゼロです。
キャスト対コンバートは赤いニシンです!
2行目から「合計」を省略しました。だから、これはうまくいきます。
(int)TimeSpan.FromMinutes(5).TotalMilliseconds;
それらは同じです...あなたはTotalMilliseconds対Millisecondsを使用しました。1つ目は5分間の合計ミリ秒数で、2つ目は余り、つまり時間IEを「00:05:00.000」の「000」で表示したい場合に表示される値です。
問題は変換ではなく、TotalMillisecondsとMillisecondsを比較していることです。