Tôi đã xem xét một số mẫu mã của Microsoft cho cảm biến Kinect và đã tình cờ gặp phải dòng sau.Tại sao nên sử dụng TimeSpan.CompareTo() thay vì < > hoặc =
TimeSpan zeroDuration = TimeSpan.FromSeconds(0.0);
TimeSpan timeRemaining = ...;
if (timeRemaining.CompareTo(this.zeroDuration) > 0)
{
}
Tôi hiểu thế nào CompareTo()
rất hữu ích trong các tình huống như sắp xếp nhưng tại sao nó sẽ được sử dụng trong một điều kiện if()
thay vì cách tiếp cận trực tiếp hơn?
if (timeRemaining > this.zeroDuration)
{
}
PS: Tôi sẽ mang nó theo một hạt muối nếu nó xuất thân từ bất cứ nguồn nào khác nhưng với chất lượng chung của mã giả sử có một lý do
tôi cho rằng đó chỉ là một sự khác biệt về phong cách, nhưng tôi có thể là sai. @Amicable đó là chủ yếu về so sánh bình đẳng khác nhau, không phải '>' vs 'CompareTo'. –
Đối với TimeSpans, không có sự khác biệt. Tôi đoán là dev mẫu không nhận thức được rằng các toán tử quá tải đã tồn tại. –
@Amicable null xuất hiện trước một chuỗi và nó sử dụng CultureInfo.CurrentCulture.CompareInfo.Compare, có nghĩa là nó sẽ sử dụng một so sánh phụ thuộc vào văn hóa. Điều này có nghĩa là ß sẽ so sánh bằng SS ở Đức, hoặc tương tự - không áp dụng cho TimeSpan –