Bạn không thể hạn chế điều hành, nhưng bạn có thể hạn chế giao diện. Do đó, dự định sử dụng >=, <=, ==
đã hết, nhưng bạn có thể sử dụng CompareTo, Equals
.
where T : IComparable<T>
Interface documentation
Giao diện này mang đến cho bạn phương pháp CompareTo
đó là hữu ích cho trật tự quan hệ (lớn hơn, nhỏ hơn, vv). Các nguyên tố và chuỗi đã triển khai thực hiện điều này, nhưng bạn sẽ cần phải thực hiện điều này cho các kiểu tùy chỉnh của riêng bạn. Bạn sẽ sử dụng nó như thế này
void SomeMethod<T>(T alpha, T beta) where T : IComparable<T>
{
if (alpha.CompareTo(beta) > 0)
{
// alpha is greater than beta, replaces alpha > beta
}
else if (alpha.CompareTo(beta) < 0)
{
// alpha is less than beta, replaces alpha < beta
}
else
{
// CompareTo returns 0, alpha equals beta
}
}
Equals
bạn nhận được theo mặc định như một phương pháp ảo trên object
. Bạn muốn ghi đè phương thức này trên các kiểu tùy chỉnh của riêng bạn nếu bạn muốn một cái gì đó khác với bình đẳng tham chiếu được sử dụng. (Người ta cũng khuyên để ghi đè GetHashCode
cùng một lúc.)
Nguồn
2011-07-31 14:49:28
IComparable không có phương pháp Equals, thats IEquatable –
@ Nathan, bạn là chính xác, nhưng 'Equals' là một phương pháp ảo trên các đối tượng theo mặc định, vì vậy tôi đã không đề cập đến giao diện trong câu trả lời. Sẽ cập nhật cho rõ ràng. –
Tôi đã làm như vậy nhưng bây giờ tôi nhận được lỗi 'nhà điều hành
rohit89