C# 一元操作符及重载
2017-10-12 20:17
218 查看
一元操作符:
+ - ! ~ ++ – 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必须同时重载。
+ - ! ~ ++ – 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); } }
相关文章推荐
- C#中奇妙的操作符重载
- C#关于操作符的重载
- C#操作符的重载
- C#操作符的重载
- C#操作符的重载
- C#中奇妙的操作符重载
- C# ==和 != 操作符重载注意事项
- 一元运算符操作符重载
- C#中的操作符重载
- 一元操作符重载
- C#操作符的重载
- CLR via C#学习笔记:C#操作符重载学习( 基于.NET3.5 )
- C#使用operator关键字实现操作符重载
- C# 中重载自增自减操作符的具体运算原理 ----从C++程序员的角度看C#自增操作符重载的实质
- C#中奇妙的操作符重载
- 我屌你个C#操作符重载
- C#运算符的重载一元二元运算符
- C#基础知识整理:基础知识(5) 方法的重载
- C#中的Nullable及??操作符
- c# 重载和override的区别简析