0

ここに簡単なC#コードがあります:

Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
//which brings me 300000

(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0

キャスト(int)結果が異なるのはなぜConvert.ToInt32()ですか?

両方が同じ結果をもたらすべきではありませんか?

4

7 に答える 7

8

最初のバージョンでは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)
于 2011-12-06T22:36:49.607 に答える
3

ミリ秒は、5秒のミリ秒部分です。2番目のものにもTotalMillisecondsを使用します。

于 2011-12-06T22:36:52.577 に答える
2

最初の例では、TotalMillisecondsを使用し、次にMillisecondsのみを使用します。

于 2011-12-06T22:37:39.357 に答える
1

エラーは、2番目の例では、.Millisecondsプロパティではなくプロパティを呼び出していることです.TotalMilliseconds

前者はミリ秒単位で5分を返します。後者は5分のミリ秒部分を返します。これはゼロです。

キャスト対コンバートは赤いニシンです!

于 2011-12-06T22:36:53.933 に答える
1

2行目から「合計」を省略しました。だから、これはうまくいきます。

(int)TimeSpan.FromMinutes(5).TotalMilliseconds;
于 2011-12-06T22:38:43.467 に答える
1

それらは同じです...あなたはTotalMilliseconds対Millisecondsを使用しました。1つ目は5分間の合計ミリ秒数で、2つ目は余り、つまり時間IEを「00:05:00.000」の「000」で表示したい場合に表示される値です。

于 2011-12-06T22:39:31.750 に答える
1

問題は変換ではなく、TotalMillisecondsとMillisecondsを比較していることです。

于 2011-12-06T22:39:51.943 に答える