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;//没有对应的重载 ,参数顺序也要一致 
相关推荐
旖旎夜光19 分钟前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
揽星河..37 分钟前
【C语言】结构体
c语言·开发语言
2601_966949651 小时前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
神仙别闹2 小时前
基于Python实现英词语自动对齐系统
开发语言·python
akinggw2 小时前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
老歌老听老掉牙3 小时前
圆柱端面四平面交线及其在yoz面投影的几何解析与 Python 实现
开发语言·python·平面
旖旎夜光3 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
俩个逗号。。3 小时前
Kotlin flow 详解
android·开发语言·kotlin
淡海水4 小时前
10-01-互操作-C#与C++边界的内存管理
unity·c#·游戏引擎·.netcore·gc
程序猿乐锅4 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight