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;//没有对应的重载 ,参数顺序也要一致 
相关推荐
один but you11 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
MY_TEUCK12 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
测试员周周12 小时前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest
光泽雨13 小时前
c#中的Type类型
开发语言·前端
见叶之秋13 小时前
C++基础入门指南
开发语言·c++
计算机安禾13 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法
qq_4017004113 小时前
Qt 项目中使用 QSS 的全面总结
开发语言·qt
玖釉-14 小时前
C++ 中的循环语句详解:while、do...while、for、嵌套循环与循环控制
开发语言·c++·算法
XMYX-014 小时前
37 - Go env 环境变量:配置管理与运行时控制
开发语言·golang
一楼的猫14 小时前
从文本特征分析看网文平台AI检测:3个被忽视的指标
开发语言·人工智能·学习方法·ai编程·ai写作·ai自动写作