C#运算符重载:让对象也能使用“加减乘除”

在我们学习C# 的时候,我们平时用 "+"、"-"、"*"、"/" 这些运算符,感觉非常简单。比如两个整数直接**"a + b"** 就能算出结果。但是,如果我们自己创建了一个类,两个对象能不能直接用**"+"** 相加呢?

默认情况下是不行的,这时候就要用到一个东西------运算符重载

简单来说,运算符重载就是:我们自己规定某个运算符遇到自己的对象时应该怎么计算

比如我们创建一个 **"Point"**类,用来表示坐标:

cs 复制代码
class Point
{
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }

    public static Point operator +(Point p1, Point p2)
    {
        return new Point(p1.X + p2.X, p1.Y + p2.Y);
    }
}

这里的重点就是:

cs 复制代码
public static Point operator +(Point p1, Point p2)

这句话就是在告诉C#:"以后两个 "Point" 对象使用 "+" 的时候,就按照我这里写的规则来。"

使用起来也很简单:

cs 复制代码
Point p1 = new Point(10, 20);
Point p2 = new Point(5, 8);

Point p3 = p1 + p2;

Console.WriteLine(p3.X);
Console.WriteLine(p3.Y);

最后得到的就是 "15" 和 "28"。

这样一来,原本不能直接相加的两个对象,现在就可以使用 **"+"**了,看起来是不是方便很多?

运算符重载不仅可以重载 "+","-"、"*"、"/"、"=="、"!=" 等很多运算符都可以重载。不过也不是所有运算符都能随便重载,而且重载的时候需要遵守C#规定的语法

你可以先把它理解成一句话:

运算符重载,就是给运算符重新定义一套**"玩法"** ,让它能够按照我们自己的需求操作对象

相关推荐
2601_966949652 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
滕州市燕猫虎计算机科技工作室个体工商户3 小时前
Java锁
java·开发语言
多加点辣也没关系3 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2333 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21034 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客4 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
新时代牛马5 小时前
cyclictest 毛刺从哪来?从ftrace、latencytop、perf到IRQ/调度延迟定位
android·开发语言·python·kotlin
三8446 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker
IvanCodes6 小时前
Python 基础语法(七):推导式与常见遍历写法
开发语言·python