运算符重载与之前的索引器类似,目的是为了让语言本身使用起来更方便直接,也是一种语法糖。

一 运算符重载(Operator Overloading)

运算符重载的存在,使得现有的各种运算符可以被重新定义并用来操作用户自定义的数据类型。运算符重载只是语法糖,因为它的本质实际上还是对方法的调用,并没有为语言本身增加新特性。

a) 运算符重载的写法

public static <返回值>operator<运算符> (<参数1>,<参数2>…)

还有一些规则:

必须用public static 修饰

不限制返回值的类型,但不推荐返回bool类型。

参数的数量取决于被重载的运算符的性质,如果是一元运算符,重载时也需要一个参数,同样,二元需要两个。

重载一元运算符时,参数的类型必须是当前类。

重载二元运算符时,则要求第一个参数的类型是当前类,第二个参数类型不做限制。

b) 能够被重载的运算符

一元运算符:+,-,!,~,++,--,true,false

二元运算符:+,-,*,/,%,&,|,^,<<,>>,==,!=,>,<,>=,<=

c) 等号不能被重载,但如果二元运算符被重载,对应的组合运算符如+=,-=等也等同于被重载。

[],和()也无法重载。

d) 为了保证代码的可读性,只有在真正需要重载的时候再去重载。

学习资料:Inside C# by Tom Archer

最新文章

  1. 准备 KVM 实验环境 - 每天5分钟玩转 OpenStack(3)
  2. hdu3709
  3. eclipse配置PHP开发环境
  4. html button自动提交表单问题
  5. 【转】Cookie和Session的区别详解
  6. 使用Handler和Timer+Timertask实现简单的图片轮播
  7. git入门-分支
  8. uva 1476 - Error Curves
  9. PHP文件上传与安全
  10. 走进windows编程的世界-----windows进程
  11. 压缩网站的css和js,合并多个文件到一个文件
  12. vue 基础--&gt;进阶 教程(2): 指令、组件
  13. [学习OpenCV攻略][007][缩小图片]
  14. C# 生成小于Int数值绝对值的随机数
  15. sklearn—特征工程
  16. 防火墙/IDS测试工具Ftester
  17. postman客户端的安装与使用
  18. BETA-5
  19. BZOJ5321 JXOI2017加法(二分答案+贪心+堆+树状数组)
  20. CSS 3D的应用记录

热门文章

  1. Dispatch Queue 之 dispatch_sync
  2. fast.ai(零)windows + pytorch 0.4
  3. Spring Caching集成Ehcache
  4. es 基于match_phrase的模糊匹配原理及使用
  5. docker进阶篇(一) ---- Volume(数据卷)
  6. 如何从GitHub仓库clone项目
  7. Hadoop RPC源码分析
  8. Kafka实战-Kafka到Storm
  9. Ribbon使用Hystrix
  10. 逆向知识之CS1.6辅助/外挂专题.1.实现CS1.6主武器副武器无限子弹