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;//没有对应的重载 ,参数顺序也要一致 
相关推荐
不正经学生3 小时前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
门思科技3 小时前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php
恋恋西风5 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
Brilliantwxx5 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
BizzZ_6 小时前
C++(22)——类型转换和IO流
开发语言·c++
小范同学_6 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
geovindu7 小时前
CSharp: 万年历
开发语言·后端·c#·.net
我找到地球的支点啦7 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
予昊7 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
weixin_461408588 小时前
Mybatis-flex小记
java·开发语言·mybatis