c#运算符重载

运算符重载 概念

让自定义类和结构体 能够使用运算符

使用关键字 operator

特点

一定是一个公共的静态方法 返回值写在operator前 逻辑处理自定义

条件运算符需要成对实现

一个符号可以多个重载

不能使用ref和out

语法

public static 返回类型 operator 运算符 (参数列表)

为+进行运算符重载,让Point类的类型对象进行相加

cs 复制代码
 class Point
 {
     public int x;
     public int y;
     public static Point operator +(Point p1,Point p2)
     {
         Point p = new Point();
         p.x = p1.x + p2.x;
         p.y = p1.y + p2.y; 
         return p;
     }
     public static Point operator +(Point p1, int value)
     {
         Point p = new Point();
         p.x = p1.x + value;
         p.y = p1.y + value;
         return p;
     }
 }

对重载使用时,只能按重载的参数顺序进行运算

例如:Point p4 = p + 2;//可以重载

Point p4 = 2 + p3;//没有对应的重载 ,参数顺序也要一致

cs 复制代码
 Point p = new Point();
 p.x = 1;
 p.y = 1;
 Point p2 = new Point();
 p2.x = 1;
 p2.y = 1;
 Point p3 = p + p2;//如果不进行重载 是不能相加的
 Point p4 = p + 2;//重载
 //Point p4 = 2 + p3;//没有对应的重载 ,参数顺序也要一致 
相关推荐
Gary Studio1 小时前
安卓HAL C++基础-智能指针
开发语言·c++
啧不应该啊1 小时前
Day1 Python 与 C 的类型区别
c语言·开发语言
cen__y2 小时前
Linux07(信号01)
linux·运维·服务器·c语言·开发语言
xingpanvip2 小时前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua
guygg882 小时前
基于遗传算法的双层规划模型求解MATLAB实现
开发语言·matlab
凯瑟琳.奥古斯特3 小时前
SQLAlchemy核心功能解析
开发语言·python·flask
卷Java3 小时前
GPTQ vs AWQ vs GGUF:模型量化工具横向测评
开发语言·windows·python
charlie1145141913 小时前
嵌入式C++工程实践第20篇:GPIO 输入模式内部电路 —— 芯片是如何“听“到外部信号的
开发语言·c++·stm32·单片机
xinhuanjieyi3 小时前
极语言让ai学习的方法
开发语言·学习
xiaogutou11214 小时前
2026年历史课件PPT模板选购指南:教师备课效率与精度的平衡方案
开发语言·c#