///<summary> /// 方向索引器 ///</summary> publicclassIndexerDirection { private Vector2 up = new Vector2(0, 1); private Vector2 down = new Vector2(0, -1); private Vector2 left = new Vector2(-1, 0); private Vector2 right = new Vector2(1, 0);
public Vector2 this[EM_Direction index] { get { switch (index) { case EM_Direction.Up: return up; case EM_Direction.Down: return down; case EM_Direction.Left: return left; case EM_Direction.Right: return right; default: return up; } } set { switch (index) { case EM_Direction.Up: up = value; break; case EM_Direction.Down: down = value; break; case EM_Direction.Left: left = value; break; case EM_Direction.Right: right = value; break; default: up = value; break; } } } public Vector2 this[int index] { get { switch (index) { case0: return up; case1: return down; case2: return left; case3: return right; default: thrownew Exception("下标越界!"); } } set { switch (index) { case0: up = value; break; case1: down = value; break; case2: left = value; break; case3: right = value; break; default: thrownew Exception("下标越界!"); } } } } }
namespaceOperatorTest { classProgram { staticvoidMain() { Player a = new Player() { id = "001", name = "Kirito", email = "Kirito@Kirito.com", level = 78, hp = 170000, mp = 8000 }; Player b = new Player() { id = "002", name = "Asuna", email = "Asuna@Asuna.com", level = 76, hp = 150000, mp = 170000 };
Player c = a + b; Console.WriteLine(c.id); Console.WriteLine(c.name); Console.WriteLine(c.email); Console.WriteLine(c.level); Console.WriteLine(c.hp); Console.WriteLine(c.mp); Console.ReadKey(); } }
// 重载运算符 + publicstatic Player operator + (Player a, Player b) { Player player = new Player { id = a.id, name = a.name, email = a.email, level = a.level + b.level, hp = a.hp + b.hp, mp = a.mp + b.mp };
return player; }
// 重载运算符 - publicstatic Player operator - (Player a, Player b) { Player player = new Player { id = a.id, name = a.name, email = a.email, level = a.level - b.level, hp = a.hp - b.hp, mp = a.mp - b.mp };