跳转至

运算符重载#

来源:D:\study\C#1\stu0727\多态 运算符重载

运算符重载允许为自定义类重新定义运算符(如 +-><)的行为,让对象可以直接使用运算符进行计算。

语法格式#

public static 返回值类型 operator 要重载的运算符(参数列表)
{
    // 计算逻辑
}

示例:Box 类 — 运算符重载#

class Box
{
    public int x { get; set; }
    public int y { get; set; }
    public int z { get; set; }

    // 只读属性:体积
    public int v
    {
        get { return x * y * z; }
    }

    // 重载 + 号:两个盒子体积相加
    public static int operator +(Box a, Box b)
    {
        return a.v + b.v;
    }

    // 重载 - 号:两个盒子体积相减
    public static int operator -(Box a, Box b)
    {
        return a.v - b.v;
    }

    // 重载 >= 号:比较体积大小
    public static bool operator >=(Box a, Box b)
    {
        return a.v >= b.v;
    }

    // 重载 <= 号
    public static bool operator <=(Box a, Box b)
    {
        return a.v <= b.v;
    }
}

使用:

Box b1 = new Box() { x = 1, y = 2, z = 3 };    // 体积 = 6
Box b2 = new Box() { x = 10, y = 20, z = 30 }; // 体积 = 6000

Console.WriteLine(b1 + b2);  // → 6006  (6 + 6000)
Console.WriteLine(b2 - b1);  // → 5994  (6000 - 6)
Console.WriteLine(b1 >= b2); // → False
Console.WriteLine(b1.v > b2.v); // → False

要点:运算符重载的底层原理和普通静态方法完全一致,只是写法更加直观。不是所有运算符都能重载(如 &&||. 不能重载)。



相关笔记#