CLR支持在类型中,通过使用operator关键字定义静态成员函数来重载运算符,让开发者可以像使用内置基元类型一样使用该类型:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Salary mikeIncome = new Salary(54); 6 Salary roseIncome = new Salary(100); 7 //add方法 8 Salary total1 = Salary.add(mikeIncome, roseIncome); 9 //运算符重载 10 Salary total2 = mikeIncome + roseIncome; 11 } 12 } 13 class Salary 14 { 15 public float RNB; 16 public Salary(float value) 17 { 18 RNB = value; 19 } 20 //add方法 21 public static Salary add(Salary s1, Salary s2) 22 { 23 Salary total = new Salary(s1.RNB + s2.RNB); 24 return total; 25 } 26 //运算符重载 27 public static Salary operator +(Salary s1, Salary s2) 28 { 29 Salary total = new Salary(s1.RNB + s2.RNB); 30 return total; 31 } 32 }
第8行代码与第10行代码结果是一样的,但后者读起来一目了然。
参考:《编写高质量代码改善C#程序的157个建议》陆敏技