一篇文章搞懂操作符重载

一篇文章搞懂操作符重载我们知道 基本的数据类型可以有很多操作符运算 比如 1 4 2 5 19 45 9 等等 那么类可以进行操作符运算吗 操作符重载是 C 中的一种功能 允许你自定义或修改运算符 如 等 的行为 让你的类实例可以像基本数据类型一样进行

大家好,欢迎来到IT知识分享网。

我们知道,基本的数据类型可以有很多操作符运算,比如1+4;2.5*19;45%9 等等,那么类可以进行操作符运算吗?

操作符重载是C# 中的一种功能,允许你自定义或修改运算符(如 +、-、* 等)的行为,让你的类实例可以像基本数据类型一样进行操作。

1.1.1. 操作符重载的基本语法

在C# 中,操作符重载通过使用 operator 关键字进行定义。操作符重载必须作为类(结构)的公共静态方法进行定义,且至少有一个参数是该类或结构的类型。

1.1.2. 基本语法

public static 返回类型 operator 操作符(参数列表) {    // 操作逻辑 }

1.1.3. 操作符重载清单

操作符

描述

示例

重载方法签名

+

加法

a + b

public static 类型 operator +(类型 a, 类型 b)

减法

a – b

public static 类型 operator -(类型 a, 类型 b)

*

乘法

a * b

public static 类型 operator *(类型 a, 类型 b)

/

除法

a / b

public static 类型 operator /(类型 a, 类型 b)

%

取模

a % b

public static 类型 operator %(类型 a, 类型 b)

==

相等

a == b

public static bool operator ==(类型 a, 类型 b)

!=

不等

a != b

public static bool operator !=(类型 a, 类型 b)

>

大于

a > b

public static bool operator >(类型 a, 类型 b)

<

小于

a < b

public static bool operator <(类型 a, 类型 b)

>=

大于等于

a >= b

public static bool operator >=(类型 a, 类型 b)

<=

小于等于

a <= b

public static bool operator <=(类型 a, 类型 b)

1.1.4. 示例代码

以 Point 类的加法操作符重载为例:

(1) 定义一个 Point 类,其中包含 X 和 Y 两个属性。

(2) 实现构造函数用于初始化 Point 对象。

(3) 重载 + 操作符,定义如何将两个 Point 对象相加。

(4) 重写 ToString 方法,便于输出 Point 对象的字符串表示。

假设我们有一个表示二维点的类 Point,我们希望重载加法操作符 + 来实现两个点的相加:

public class Point {    public int X { get; set; }    public int Y { get; set; }    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);   } ​    public override string ToString()   {        return #34;({X}, {Y})";   } } ​ public class Program {    public static void Main()   {        Point p1 = new Point(2, 3);        Point p2 = new Point(4, 5);        Point p3 = p1 + p2; ​        Console.WriteLine(p3);  // 输出: (6, 8)   } }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/164421.html

(0)
上一篇 2024-12-25 14:45
下一篇 2024-12-25 15:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信