运算符重载

基本概念

概念

让自定义类和结构体,能够使用运算符。

使用关键字 

operator

特点

1.一定是一个公共的静态方法

2.返回值写在operator前

3.逻辑处理自定义

作用

让自定义类和结构体对象可以进行运算

注意

1.条件运算符需要成对实现

2.一个符号可以多个重载

3.不能使用ref和out

基本语法

public static 返回类型 operator 运算符(参数列表)

实例

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;
    }

    public static Point operator +(int value, Point p1)
    {
        Point p = new Point();
        p.x = p1.x + value;
        p.y = p1.y + value;
        return p;
    }

可重载的运算符

算术运算符

注意:符号需要两个参数还是一个参数。

 public static Point operator -(Point p1, Point P2)
 {
     return null;
 }
 public static Point operator *(Point p1, Point P2)
 {
     return null;
 }
 public static Point operator /(Point p1, Point P2)
 {
     return null;
 }
 public static Point operator %(Point p1, Point P2)
 {
     return null;
 }

 public static Point operator ++(Point p1)
 {
     return null;
 }
 public static Point operator --(Point p1)
 {
     return null;
 }

逻辑运算符

注意:符号需要两个参数还是一个参数。

public static bool operator !(Point p1)
{
    return false;
}

位运算符

注意:符号需要两个参数还是一个参数。

public static Point operator |(Point p1, Point p2)
{
    return null;
}
public static Point operator &(Point p1, Point p2)
{
    return null;
}
public static Point operator ^(Point p1, Point p2)
{
    return null;
}
public static Point operator ~(Point p1)
{
    return null;
}
public static Point operator <<(Point p1, int num)
{
    return null;
}
public static Point operator >>(Point p1, int num)
{
    return null;
}

条件运算符

1.返回值一般是bool值,也可以是其它的。

2.相关符号必须配对实现。

public static bool operator >(Point p1, Point p2)
{
    return false;
}
public static bool operator <(Point p1, Point p2)
{
    return false;
}
public static bool operator >=(Point p1, Point p2)
{
    return false;
}
public static bool operator <=(Point p1, Point p2)
{
    return false;
}
public static bool operator ==(Point p1, Point p2)
{
    return false;
}
public static bool operator !=(Point p1, Point p2)
{
    return false;
}
public static bool operator true(Point p1)
{
    return false;
}
public static bool operator false(Point p1)
{
    return false;
}

不可重载的运算符

逻辑与(&&)、逻辑或(||)

索引符 []

强转运算符 ()

特殊运算符 

点.   三目运算符? :  赋值符号=

使用

Point p = new Point();
p.x = 1;
p.y = 1;
Point p2 = new Point();
p2.x = 2;
p2.y = 2;

Point p3 = p + p2;

Point p4 = p3 + 2;
Point p5 = 2 + p3;

总结

关键

operator

固定语法:

public static 返回值 operator 运算符(参数列表)

作用:

让自定义类或结构体对象,进行运算。

注意:

1.参数的数量

2.条件运算符的配对实现

3.一个符号可以多个重载

4.不能用ref和out

  • 23
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不背完3500个考研英语词汇不改名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值