运算符的重载
/* 运算符的重载 运算必须是public和static的。公共的静态实例,而不是特定的。 */ using System; namespace Frank { public class Test { public static void Main(string[] args) { Test2 t1 = new Test2(); t1.Count = 1; Test2 t2 = new Test2(); t2.Count = 4; System.Console.WriteLine((t1+t2).Count);//输出5 System.Console.WriteLine((t1-t2).Count);//输出-3 System.Console.WriteLine((t1+6).Count);//输出7 t2.Count = 1; System.Console.WriteLine(t1==t2); } } public class Test2 { public int Count {get;set;} public static Test2 operator + (Test2 t1,Test2 t2)//重载+号 { Test2 t = new Test2(); t.Count = t1.Count + t2.Count; return t; } public static Test2 operator + (Test2 lhs,int rhs)//运算符重载与方法一样 { Test2 t = new Test2(); t.Count = lhs.Count + rhs; return t; } public static Test2 operator - (Test2 t1,Test2 t2)//重载-号 { Test2 t = new Test2(); t.Count = t1.Count - t2.Count; return t; } public static bool operator == (Test2 t1,Test2 t2)//比较运算符的重载 { return t1.Count == t2.Count; } public static bool operator != (Test2 t1,Test2 t2)//比较运算符的重载 { return t1.Count != t2.Count; } public override bool Equals(object t) { return this.Count == ((Test2)t).Count; } public override int GetHashCode() { return this.Count.GetHashCode(); } } }
可以允许重载的运算符: