我们都知道...运算符重载中,都要是 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"...好像...这有点...特殊而已哦..
解决方案 »
- C#调用dll “尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
- 关于继承与构造函数的问题,请教。
- 程序的关闭提示问题?
- 垃圾回收问题
- 请问如何用C#将PDF文件中有图片的页整页转换为tif文件输出?
- 请教:程序中的button,在我的机子上是正常的大小,可到了别人的机子上就变大了并且错位。不知如何解决。谢谢
- 取出SRC地址来?
- 如何把DataSet中的数据生成一个XML文件和一个TXT文件?
- 关于把数字转化成字母的问题,送分!!!
- 急救!!!我如何在本窗体中调用其他窗体中的相关数据、控件?
- 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原生支持。本质上说,“运算符重载”实现了对编程语言本身的修改,而对于动态语言来说,语言本身处处可以重新定义、修改和扩展,而“运算符重载”只是一个很平常和无关紧要的技巧罢了。