我们都知道...运算符重载中,都要是 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"...好像...这有点...特殊而已哦..
我的意思是说.如.
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"...好像...这有点...特殊而已哦..
解决方案 »
- AjaxControlToolkit---Slider 后台线程赋值不起作用
- 如何取得类似消息WM_CLICK的整型值
- 请问大家谁有Spring.net+Nhibernate代码!?
- (寻找高手)winform在程序运行过程中拖动和改变控件大小
- 想问个网络通信的问题
- 小数问题?
- 如何消除mainmenu菜单下的横线!
- 求C# gridview控件如何循环加行!求指导!
- C#中什么时候,用到批处理操作数据库,怎么使用,谢谢!!!
- 初学者,请高手指点!在C#做的MDI子窗体chdfrm内点击按钮,显示一个模式窗体mdfrm时,为什么在工具栏上会多一个窗口(mdfrm),怎么办???
- winform程序如何让服务器上传服务器磁盘上文件到数据库呢?
- VS2010中打包安装SqlServer 2008 R2 Express
我只是觉得,用 对象,去访问 static的东西...貌似有点不怎么合理哈...
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;
被解析成:
vect3 = +(vect1 , vect2)
这个哦...好吧...
+(parameter01, parameter02).
这样的....
这种写法被Lisp原生支持。本质上说,“运算符重载”实现了对编程语言本身的修改,而对于动态语言来说,语言本身处处可以重新定义、修改和扩展,而“运算符重载”只是一个很平常和无关紧要的技巧罢了。