建议9: 习惯重载运算符

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

    int x = ;
int y = ;
int total = x + y;

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

    int x = ;
int y = ;
int total = int.Add(x, y);

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

    Salary mikeIncome = new Salary() { RMB =  };
Salary roseIncome = new Salary() { RMB = };
Salary familyIncome = Salary.Add(mikeIncome, roseIncome);

应该使类型支持:

Salary familyIncome = mikeIncome + roseIncome; 

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

    class Salary
{
public int RMB { get; set; } public static Salary operator +(Salary s1, Salary s2)
{
s2.RMB += s1.RMB;
return s2;
}
}

转自:《编写高质量代码改善C#程序的157个建议》陆敏技

最新文章

  1. Ubuntu杂记——Ubuntu下Eclipse安装Maven问题
  2. oracle dataguard (一)
  3. SQLDMOHelper
  4. HDU 2487 Ugly Windows
  5. linux命令:touch
  6. JqueryPagination 分页插件使用说明
  7. 利用no_merge优化
  8. 【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
  9. jQuery EasyUI实现全部关闭tabs
  10. struts2.5框架使用通配符指定方法(常见错误)
  11. git使用过程中遇到的问题及处理方法
  12. 《android入门第一季》之android目录结构详解
  13. HDU 2147 P/N博弈
  14. mpvue——引入antv-F2图表
  15. Hdoj 1846.Brave Game 题解
  16. Django的使用规则
  17. 转(C# 类似右键菜单弹出窗体)
  18. 【C#】#102 发送邮件
  19. MySQL数据库有哪些特点
  20. day12-迭代器

热门文章

  1. bzoj 3230 相似子串——后缀数组
  2. (转)Android和JavaScript互相调用
  3. week-02 线性表
  4. POJ 2823 Sliding Window(单调队列入门题)
  5. Java-Maven-Runoob:Maven 仓库
  6. Ajax 请求session过期的统一处理
  7. 1146 Topological Order
  8. springboot成神之——spring的文件上传
  9. ndnarry元素处理
  10. Python IO 多路复用 \协程