C#运算符重载“>”的操作浅析

C#运算符重载“>”的操作问题的出现:今天一个同学在做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中不允许但对出现,如下代码就是正确的。

 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;     


  }    

为什么需要这样做呢?

相关推荐