我们都知道...运算符重载中,都要是 public static的...原因我们都知道...但是我感觉这样的设计貌似有点误认....
我的意思是说.如.
 public static Vector operator +(Vector lhs, Vector rhs) {
            Vector result = new Vector(lhs);
            result.x += rhs.x;
            result.y += rhs.y;
            result.z += rhs.z;            return result;
        }Main call:
Vector vect1, vect2, vect3;            vect1 = new Vector(3.0, 3.0, 1.0);
            vect2 = new Vector(2.0, -4.0, -4.0);
            vect3 = vect1 + vect2;因为C#中.这里都可以看成是 "对象可以调用 static Member"...好像...这有点...特殊而已哦..

解决方案 »

  1.   

    对于运算符重载,C#不是特地定义了一个特殊关键字 operator 了么
      

  2.   


    我只是觉得,用 对象,去访问 static的东西...貌似有点不怎么合理哈...
      

  3.   

    我只是觉得,用 对象,去访问 static的东西...貌似有点不怎么合理哈...
      

  4.   

     public static Vector operator plus(Vector lhs, Vector rhs) {
                Vector result = new Vector(lhs);
                result.x += rhs.x;
                result.y += rhs.y;
                result.z += rhs.z;
     
                return result;
            }Vector vect1, vect2, vect3;
     
                vect1 = new Vector(3.0, 3.0, 1.0);
                vect2 = new Vector(2.0, -4.0, -4.0);
                vect3 = plus(vect1 , vect2);不是对象调用了静态方法,而是静态方法接受两个参数。
      

  5.   


      vect3 = vect1 + vect2;
    被解析成:
    vect3 = +(vect1 , vect2)
    这个哦...好吧...
      

  6.   

    那是你想多了。一时没有回神,是
    +(parameter01, parameter02).
    这样的....
      

  7.   

    vect3 = +(vect1 , vect2)
    这种写法被Lisp原生支持。本质上说,“运算符重载”实现了对编程语言本身的修改,而对于动态语言来说,语言本身处处可以重新定义、修改和扩展,而“运算符重载”只是一个很平常和无关紧要的技巧罢了。