C#運算符重載“>”的操作淺析
C#運算符重載“>”的操作問題的出現(xiàn):今天一個同學在做ProjectHoshimi的時候,自己在封裝一個對象庫。
希望使用C#運算符重載>的操作,語法正確,但是總是不能成功。
按照MSDN C# Keyword opeartor定義可以有下面的語法構成
- public static result-type operator unary-operator ( op-type operand )
- public static result-type operator binary-operator (
- op-type operand,
- op-type2 operand2
- )
- public static implicit operator conv-type-out ( conv-type-in operand
- )
- public static explicit operator conv-type-out (
- conv-type-in operand
- )
那么下面代碼就是正確的
- class A {
- private int a;
- public static bool operator>(A a,A b){
- return a.a > b.a;
- }
- public A(int value) {
- a = value;
- }
- }
C#運算符重載“>”的操作問題再次提出:為什么不能成功編譯呢?因為>運算符在.NET Framework中不允許但對出現(xiàn),如下代碼就是正確的。
- class A {
- private int a;
- public static bool operator>(A a,A b){
- return a.a > b.a;
- }
- public static bool operator <(A a, A b) {
- return a.a < b.a;
- }
- public A(int value) {
- a = value;
- }
為什么需要這樣做呢?
其實我覺得這個就是C#在設計上面默認了一些讓系統(tǒng)編碼更安全的一些約束。如果沒有這樣的約束,那么可能是>重載了,但是<沒有重載,但是如果有人使用將會發(fā)現(xiàn)很未知的錯誤。
C#運算符重載“>”的操作的基本情況就向你介紹到這里,希望對你了解C#運算符重載“>”的操作有所幫助。
【編輯推薦】