C#运算符重载(操作符重载)
1.什么是操作符重载
定义:(百科定义)就是把已经定义的、有一定功能的操作符进行重新定义,来完成更为细致具体的运算等功能。操作符重载可以将概括性的抽象操作符具体化,便于外部调用而无需知晓内部具体运算过程。
2.为什么需要运算符重载?
在C#中 ,内置的数据类型有:int、double等这些类型是可以直接进行数值加减运算。例如:int i, j = 1; int sum=i+j;可以直接得到想要的和sum。
如果要比较一个类(结构)进行对象比较加、减等操作 该如何实现?例如一个类Test,有对象a,b 如何实现对象相加a+b?
3.运算符重载出场
公式:public static “返回类型” operator “操作符符号” {…………}
eg: public static Test operator +(Test lhs, Test rhs){ return new Test(lhs.value + rhs.value); }
4.案例
struct Test { private int value; public int Value { get { return value; } } public Test(int iValue) { this.value = iValue; } //C#操作符重载 //1、声明一个二元操作符,将两个Test加到一起 public static Test operator +(Test lhs, Test rhs) { return new Test(lhs.value + rhs.value); } //2、声明一个二元操作符,将Test和int加到一起 public static Test operator +(Test lhs, int rhs) { return lhs + new Test(rhs); } //3、声明一个二元操作符,将int和Test加到一起 public static Test operator +(int lhs, Test rhs) { return new Test(lhs) + rhs; } //4、声明一个一元操作符, public static Test operator ++(Test h) { h.value++; return h; } }
定义一个结构struct,当然定义成类class一样
结果:
只有定义了才可做操作相关的操作,例如上面3:将int和Test加到一起只可以 int+Test对象 ,2.3+Test对象则报错
5.注意
C#中有6个比较运算符,它们分为 3对:
● == 和 !=
● > 和 <
● >= 和 <=
C#要求成对重载比较运算符。如果重载了==,也必须重载!=,否则会产生编译错误
6.可以重载的运算符(源自C#高级编程)
……温故知新,记笔记……
作者:PEPE
出处:http://pepe.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步