-
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace CountStrDemo
- {
- class 比较运算符重载
- {
- public static void Main(string[] args)
- {
- // 比较预算符有6个,3对 分别是:
- // == !=
- // > <
- // >= <=
- //成对重载,例如,重载了 == 则必须重载 != 反回类型必须是bool
- }
- class MyVectorForEq
- {
- public int x;
- public int y;
- public MyVectorForEq( int x , int y )
- {
- this.x = x;
- this.y = y;
- }
- //重载==运算符 同时必须成对重载 !=
- public static bool operator == ( MyVectorForEq lobj , MyVectorForEq robj )
- {
- //这里只是做了成员值的比较,ms推荐重写Equals方法与配合hash来进行对象内容的比较
- if (lobj.x == robj.x && lobj.y == robj.y)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public static bool operator !=( MyVectorForEq lobj , MyVectorForEq robj)
- {
- if (lobj.x == robj.x && lobj.y == robj.y)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- }
- }
- }
- using System.Collections.Generic;
- using System.Text;
- namespace CountStrDemo
- {
- class 运算浮重载
- {
- public static void Main(string[] args)
- {
- Vector vec1 = new Vector( 5 , 6 , 7 );
- Vector vec2 = new Vector( 2 , 2 , 2 );
- Vector revec = vec1 + vec2;
- Console.WriteLine( "x={0} y={1} z={2}" , revec.x , revec.y , revec.z );
- Console.Read();
- }
- }
- class Vector
- {
- public int x;
- public int y;
- public int z;
- public Vector( int x , int y , int z )
- {
- this.x = x;
- this.y = y;
- this.z = z;
- }
- public Vector(Vector vec)
- {
- this.x = vec.x;
- this.y = vec.y;
- this.z = vec.z;
- }
- //定义重载 , 和方法类似,不过必须是public static ...可以记做没有方法名,呵呵operator + 指重载+号运算
- public static Vector operator + ( Vector lvec , Vector rvec )
- {
- Vector revec = new Vector( lvec );
- revec.x += rvec.x;
- revec.y += rvec.y;
- revec.z += rvec.z;
- return revec;
- }
- }
- }
-------------------------------------------------------------------------------------------------