C# 一元操作符及重载

一元操作符:
+ - ! ~ ++ – true false & sizeof()

可重载的一元操作符:
+ - ! ~ ++ – true false

1.先说明操作符的作用。
2.对可重载的操作符进行重载举例。

说明:
+:
一元 + 运算符是为所有数值类型预定义的。对数值类型进行一元 + 运算的结果就是操作数的值。
也就是数值的正数。

-:
一元 - 运算符是为所有数值类型预定义的。数值类型的一元 - 运算的结果是操作数的反数
也就是数值的负数。

!:
逻辑非运算符 (!) 是对操作数求反的一元运算符。为 bool 定义了该运算符,当且仅当操作数为 false 时才返回 true。

~:
~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的

++:
增量运算符.
++x:先进行自增,后进行运算。
x++:先进行运算,后进行自增。

–:
减量运算符.
–x:先进行自减,后进行运算。
x–:先进行运算,后进行自减。

true:
当由用户定义的类型定义时,返回 bool 值 true 以表示真,否则返回 false。

false:

&:
返回其操作数的地址

sizeof():
用于获取 值类型 的字节大小.
sizeof 运算符仅适用于值类型,而不适用于引用类型。
从 C# 2.0 版开始,将 sizeof 应用于预定义类型不再要求使用不安全模式。

重载操作符说明:
1.重载一元操作符+或者-时,不需要重载-或+。
2.重载一元操作符++或者–时,不需要重载–或++。
3.操作一元操作符false或true时,必须重载true或false;即true和false必须同时重载。

//汽车类,设定速度操作180后为假(报废),反之为真(未报废)
    public struct Car
    {
        //速度
        public int Speed { get; set; }

        //方向 1 正向  -1 逆向
        public int Direction { get; set; }

        //重载 一元操作符 - 表明汽车逆向(倒车)行驶
        public static Car operator -(Car operatorCar)
        {
            operatorCar.Direction=-1;
            return operatorCar;
        }

        //重载 一元操作符  + 表明汽车正向行驶
        public static Car operator +(Car operatorCar)
        {
            operatorCar.Direction = 1;
            return operatorCar;
        }

        //加速 一元操作符++ 加速
        public static Car operator ++(Car operatorCar)
        {
            //根据实际情况进行实现
            operatorCar.Speed++;
            return operatorCar;
            //return new Car() { Speed = operatorCar.Speed + 1, Direction = operatorCar.Direction };
        }

        //重载 一元操作符-- 减速
        public static Car operator --(Car operatorCar)
        {
            //根据实际情况进行实现
            operatorCar.Speed--;
            return operatorCar;
            //return new Car() { Speed = operatorCar.Speed - 1, Direction = operatorCar.Direction };
        }

        //重载 一元操作符true
        public static bool operator true(Car operatorCar)
        {
            return operatorCar.Speed < 180;
        }

        //重载 一元操作符false
        public static bool operator false(Car operatiorCar)
        {
            return operatiorCar.Speed > 180;
        }

        //重载 一元操作符!  逻辑非
        public static bool operator !(Car operatiorCar)
        {
            return !(operatiorCar.Speed > 180);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值