改善C#程序的157个建议(连载9)

发表于:2011-10-24 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陆敏技    来源:51Testing软件测试网采编

  建议9:习惯重载运算符

  在开发过程中,应该习惯于使用微软提供给我们的语法特性。我想每个人都喜欢看到这样的语法特性:

  1. int x = 1;  
  2. int y = 2;  
  3. int total = x + y;

  而不是用下面的语法来完成一样的事情:

  1. int x = 1;  
  2. int y = 2;  
  3. int total = int.Add(x, y);

  同理,在构建自己的类型时,我们应该始终考虑该类型是否可以用于运算符重载。如果考虑类型Salary,下面的这段代码看起来就不是那么舒服了:

  1. Salary mikeIncome = new Salary() { RMB = 22 };  
  2. Salary roseIncome = new Salary() { RMB = 33 };  
  3. Salary familyIncome = Salary.Add(mikeIncome, roseIncome);

  应该使类型支持:

Salary familyIncome = mikeIncome + roseIncome;

  后者读起来一目了然。CLR支持在类型中,通过使用operator关键字定义静态成员函数来重载运算符,让开发人员可以像使用内置基元类型一样使用该类型。Salary重载“+”运算符的版本看起来应该像以下形式:

  1. class Salary  
  2. {  
  3.     public int RMB { get; set; }  
  4.     public static Salary operator +(Salary s1, Salary s2)  
  5.     {  
  6.         s2.RMB += s1.RMB;  
  7.         return s2;  
  8.     }  
  9. }

相关链接:

改善C#程序的157个建议(连载1)

改善C#程序的157个建议(连载2)

改善C#程序的157个建议(连载3)

改善C#程序的157个建议(连载4)

改善C#程序的157个建议(连载5)

改善C#程序的157个建议(连载6)

改善C#程序的157个建议(连载7)

改善C#程序的157个建议(连载8)

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号