c#运算符重载
注意点:c#要求所有的运算符重载都声明为public和static ,表示他们与他们的类或者结构相关,而不是与实力相关,所以运算符重载的代码体不能访问非静态类成员,也不能访问this标识符
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 运算符重载 { 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 static Vector operator+(Vector v1,Vector v2) { return new Vector(v1.x + v2.x,v1.y + v2.y,v1.z + v2.z); } public static Vector operator -(Vector v1, Vector v2) { return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z); } public static Vector operator *(Vector v1, Vector v2) { return new Vector(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z); } public static Vector operator /(Vector v1, Vector v2) { return new Vector(v1.x / v2.x, v1.y / v2.y, v1.z / v2.z); } } class Program { static void Main(string[] args) { Vector v1 = new Vector(1,2,3); Vector v2 = new Vector(5,6,7); Vector v3 = v1 + v2; Vector v4 = v1 * v2; Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v3.x, v3.y, v3.z); Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v4.x, v4.y, v4.z); Console.ReadLine(); } } }