Tôi nhìn DateTime Equals thực hiện:Ngày giờ so sánh với bọ ve nội bộ?
public bool Equals(DateTime value)
{
return (this.InternalTicks == value.InternalTicks);
}
và sau đó nhìn vào internalticks
internal long InternalTicks
{
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
get
{
return (((long) this.dateData) & 0x3fffffffffffffffL);
}
}
Và sau đó tôi nhận thấy con số này: 0x3fffffffffffffffL
đó là: 4611686018427387903
Nhưng thêm thú vị là nhị phân đại diện:
00111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
^^
||
Xin lưu ý các mũi tên
tôi có thể hiểu được nếu chỉ bên trái mũi tên có thể đã được 0
(đại diện tích cực)
Nhưng tại sao cái thứ hai cũng là
0
?Ngoài ra, tại sao tôi lại muốn nó là
&
với số1111....
? nếu tôi muốn hiển thị5
Tôi không phải làm5 & 1
, chỉ cần 5.
Bất kỳ trợ giúp nào?
Vì vậy, đặt số không ở bên trái (2 số không) giống như so sánh mà không có DateTimeKind ... phải không? –
Phải. Nó là một * mặt nạ *, sử dụng & mặt nạ toán tử ra các giá trị của các bit đó và làm cho chúng bằng không. –
@RoyiNamir Có, nó bỏ qua 'Loại 'khi so sánh bằng cách che dấu nó ra. (IMO quyết định không hợp lệ) – CodesInChaos