28 votes

Dans le CMD, quelle est la différence entre comparer deux dates à l'aide de la tique et tout comme il est

Je suis nouveau en C#. J'allais à travers un code écrit par quelqu'un qui a travaillé sur mon projet plus tôt, quand je suis tombé sur ceci:

if (olderTime.happenedWhen.Ticks > happenedWhen.Ticks)
{
   thisIsTrulyNew = false;
}

Les deux olderTime.happenedWhen et happenedWhen sont de type DateTime.

Est-ce une façon plus précise de la comparaison de DateTime?

Je sais que les Tiques représente 100 nano-seconde d'intervalle à partir de 00:00, 1 janvier 0001. Mais pourquoi faire ce genre de comparaison quand j'ai pensé que nous pourrions faire:

if (olderTime.happenedWhen > happenedWhen){
   thisIsTrulyNew = false
}

Ne les tiques comparaison de parvenir à quelque chose que la comparaison ne serait pas?

30voto

D Stanley Points 54768

Est-ce une façon plus précise de la comparaison de DateTime?

Pas le moins du monde. En fait, c'est comment la > opérateur est mis en œuvre en interne.

De la .NET source de la Référence:

public static bool operator >(DateTime t1, DateTime t2) {
    return t1.InternalTicks > t2.InternalTicks;
}

Quelqu'un pourrait ont cru faire le malin en sautant une ligne de code interne, et allant droit à l' Ticks de la propriété. En réalité, la lecture de Ticks retours InternalTicks, de sorte que si il est optimisé par le compilateur, à l'aide de l' Ticks propriété ajoute deux appels afin d'enregistrer un appel (ni de qui allait changer la performance de manière significative).

18voto

Dirk Points 5116

La mise en œuvre de la pour compare les tiques aussi, comme vous pouvez le voir à partir de ce code démonté (mscorlib.dll, System.DateTime classe):

3voto

ken2k Points 24640

L'opérateur > est implémenté comme suit:

 public static bool operator >(DateTime t1, DateTime t2)
{
   return t1.InternalTicks > t2.InternalTicks;
}
 

C'est donc vraiment la même chose (comme Ticks renvoie InternalTicks ).

3voto

Jeroen Vannevel Points 18676

La source montre ceci:

Ce qui est

Où `` est fixé dans le constructeur et se réfère simplement à et ```` est

2voto

Alberto Points 5865

C'est la même chose. À partir du code source, l'opérateur `` est défini comme :

Juste pour l'exhaustivité, la `` propriété est définie comme:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X