web-dev-qa-db-fra.com

C # Timespan Milliseconds vs TotalMilliseconds

Dans l'exemple ci-dessous, pourquoi la propriété Milliseconds renvoie 0 mais la propriété TotalMilliseconds renvoie 5000

// 5 seconds
TimeSpan intervalTimespan = new TimeSpan(0, 0, 5);

// returns 0
intervalTimespan.Milliseconds;

// returns 5000.0
intervalTimespan.TotalMilliseconds
47
AJM

Simple: 

  • Les millisecondes sont les millisecondes restantes, qui ne forment pas une seconde entière. 
  • TotalMillisecondes est la durée complète de la période exprimée en millisecondes.
54
Daniel Hilgarth

Étant donné que Milliseconds renvoie la partie en millisecondes, TotalMilliseconds renvoie le total en millisecondes représenté par le Timespan.

Exemple: 0: 00: 05.047

Millisecondes: 47

Total millisecondes: 5047

58
David Kemp

Cela se produit parce que intervalTimespan.Milliseconds; retourne le composant millisecondes de la période . Dans votre constructeur de périodes, vous n'avez que heure minute et le deuxième composant, raison pour laquelle le résultat est 0 . __.Ex:

// 5 miliseconds
TimeSpan intervalTimespan = new TimeSpan(0, 0,0,0,5);

// returns 5
intervalTimespan.Milliseconds;

// returns 5
intervalTimespan.TotalMilliseconds
2
Marginean Vlad

TimeSpan a d'autres surcharges

TimeSpan(hour, minute, seconds)
TimeSpan(days, hour, minute, seconds)
TimeSpan(days, hour, minute, seconds, milliseconds)

La propriété millisecondes renverra la valeur réelle en millisecondes

Nombre total de millisecondes retournés, y compris les jours, les heures, les minutes et les secondes

1
hallie

Il est évident que Miliseconds renvoie uniquement la partie milisenconds de votre TimeSpan, alors que TotalMiliseconds calcule le nombre de millisecondes exprimées en temps par TimeSpan.

Dans votre cas, renvoie d'abord 0 car vous avez exactement 5 secondes, le second retourne 5000 car 5s == 5000ms

1
Pako

Une chose importante que les autres choses ne mentionnent pas, c'est que (selon la documentation):

La propriété Milliseconds représente des millisecondes entières, alors que la propriété TotalMilliseconds représente entier et fractionnaire millisecondes.

Cela est également déductible des remarques de TotalMilliseconds:

Cette propriété convertit la valeur de cette instance de ticks en millisecondes.

Cela a une implication énorme, IMO, car si vous voulez la représentation la plus précise en secondes ou en millisecondes, vous devez utiliser les propriétés TotalSeconds ou TotalMilliseconds, qui sont de type double.

0
heltonbiker