首页 > 代码库 > .NET重载运算符
.NET重载运算符
代码如下:
1 /// <summary> 2 /// 坐标(结构类型) 3 /// </summary> 4 public struct Coordinate 5 { 6 public int x; 7 public int y; 8 9 public Coordinate(int x, int y) 10 { 11 this.x = x; 12 this.y = y; 13 } 14 15 /// <summary> 16 /// 对象存在于集合中 17 /// </summary> 18 /// <param name="list"></param> 19 /// <returns></returns> 20 public bool IsOneOf(List<Coordinate> list) 21 { 22 if (list.IndexOf(this) >= 0) 23 { 24 return true; 25 } 26 return false; 27 } 28 29 /// <summary> 30 /// 比较两个坐标相等 31 /// </summary> 32 /// <param name="c"></param> 33 /// <returns></returns> 34 public override bool Equals(object c) 35 { 36 if (c.GetType() != this.GetType()) 37 return false; 38 39 Coordinate coordinate = (Coordinate)c; 40 41 if (this.x != coordinate.x) 42 return false; 43 44 if (this.y != coordinate.y) 45 return false; 46 47 return true; 48 } 49 50 /// <summary> 51 /// 比较两个坐标相等 52 /// </summary> 53 /// <param name="lhs"></param> 54 /// <param name="rhs"></param> 55 /// <returns></returns> 56 public static bool operator ==(Coordinate lhs, Coordinate rhs) 57 { 58 return lhs.Equals(rhs); 59 } 60 61 /// <summary> 62 /// 比较两个坐标不相等 63 /// </summary> 64 /// <param name="lhs"></param> 65 /// <param name="rhs"></param> 66 /// <returns></returns> 67 public static bool operator !=(Coordinate lhs, Coordinate rhs) 68 { 69 return !lhs.Equals(rhs); 70 } 71 72 /// <summary> 73 /// 两个坐标相加,获得新坐标 74 /// </summary> 75 /// <param name="lhs"></param> 76 /// <param name="rhs"></param> 77 /// <returns></returns> 78 public static Coordinate operator +(Coordinate lhs, Coordinate rhs) 79 { 80 return new Coordinate() 81 { 82 x = lhs.x + rhs.x, 83 y = lhs.y + rhs.y 84 }; 85 } 86 87 /// <summary> 88 /// 两个坐标象减,获得新坐标 89 /// </summary> 90 /// <param name="lhs"></param> 91 /// <param name="rhs"></param> 92 /// <returns></returns> 93 public static Coordinate operator -(Coordinate lhs, Coordinate rhs) 94 { 95 return new Coordinate() 96 { 97 x = lhs.x - rhs.x, 98 y = lhs.y - rhs.y 99 }; 100 } 101 102 public override int GetHashCode() 103 { 104 return base.GetHashCode(); 105 } 106 }
使用如下
Coordinate coor1 = new Coordinate(10, 20); Coordinate coor2 = new Coordinate(20, 30); Console.WriteLine("coor1 == coor2:{0}", coor1 == coor2); var coor3 = coor2 - coor1; Console.WriteLine("coor2 - coor1获得新坐标【X:{0}】【Y:{1}】", coor3.x, coor3.y); coor3 = coor2 + coor1; Console.WriteLine("coor2 + coor1获得新坐标【X:{0}】【Y:{1}】", coor3.x, coor3.y);
运行结果:
.NET重载运算符
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。