Ho guardato DateTime Uguale applicazione:DateTime confrontando con tick interni?
public bool Equals(DateTime value)
{
return (this.InternalTicks == value.InternalTicks);
}
e poi guardare internalticks
internal long InternalTicks
{
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
get
{
return (((long) this.dateData) & 0x3fffffffffffffffL);
}
}
E poi ho notato questo numero: 0x3fffffffffffffffL
che è: 4611686018427387903
Ma altro interessante è il suo binario rappresentazione:
00111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
^^
||
Si prega di notare le frecce
ho potuto capire se solo il freccia a sinistra sarebbe stato 0
(rappresentazione positiva)
Ma perché il secondo è anche
0
?Inoltre, perché vorrei che fosse
&
con un numero1111....
? se voglio visualizzare5
non ho a che fare5 & 1
, appena 5.
Qualsiasi aiuto?
Quindi mettere gli zero a sinistra (2 zeri) è come confrontare senza il DateTimeKind ... giusto? –
Giusto. È una * maschera *, che usa l'operatore & nasconde i valori di quei bit e li rende zero. –
@RoyiNamir Sì, ignora il "Tipo" quando lo si confronta mascherandolo. (Decisione errata IMO) – CodesInChaos