Tôi có một loại được liệt kê mà tôi muốn xác định các toán tử>, <,> = và < = cho. Tôi biết rằng các toán tử này được tạo ra dựa trên kiểu liệt kê (theo số documentation) nhưng tôi muốn xác định rõ ràng các toán tử này (để làm rõ, kiểm soát, biết cách thực hiện, vv ...)Làm cách nào để quá tải một toán tử cho một liệt kê trong C#?
tôi đã hy vọng tôi có thể làm một cái gì đó như:
public enum SizeType
{
Small = 0,
Medium = 1,
Large = 2,
ExtraLarge = 3
}
public SizeType operator >(SizeType x, SizeType y)
{
}
Nhưng điều này dường như không làm việc ("Toke bất ngờ") ... có thể như vậy? Nó có vẻ như nó nên được kể từ khi có các nhà khai thác được xác định rõ ràng. Bất kỳ đề xuất?
đó là disapointing, làm thế nào để họ làm điều đó implictly sau đó? Có vẻ như sẽ không có cách nào, nhưng tôi nghĩ nếu bạn có thể làm điều đó một cách ngầm định thì sẽ có một cách để làm điều đó một cách rõ ràng. Tôi đoán là không. Cảm ơn vì thông tin. – ChrisHDog
Họ không. Không có cách nào * ngầm định *. Bạn chỉ đơn giản là không thể quá tải các nhà khai thác cho enums. –
Theo: http://msdn.microsoft.com/en-us/library/aa664726(VS.71).aspx ... "Mỗi kiểu liệt kê ngầm cung cấp các toán tử so sánh được xác định trước:" ... Tôi chỉ là hy vọng có một cách để cung cấp một cách rõ ràng một toán tử so sánh tương tự. Vì vậy, không phải là một nhà điều hành quá tải chính xác, nhưng một cái gì đó simlar. – ChrisHDog