51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> asp.net >> 文章正文

C#的运算符重载的问题

更新时间:2013-6-1:  来源:51代码网

C#的运算符重载的问题

我们都知道...运算符重载中,都要是 public static的...原因我们都知道...但是我感觉这样的设计貌似有点误认....
我的意思是说.如.

C# code?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:

C# code?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"...好像...这有点...特殊而已哦..

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

 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);

vect3 = +(vect1 , vect2)
这种写法被Lisp原生支持。

本质上说,“运算符重载”实现了对编程语言本身的修改,而对于动态语言来说,语言本身处处可以重新定义、修改和扩展,而“运算符重载”只是一个很平常和无关紧要的技巧罢了。

赞助商链接
推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |