首页 > 代码库 > [AaronYang]C#人爱学不学[6]
[AaronYang]C#人爱学不学[6]
不要回头,不要将就,做到这两点,人生就会简单很多幸福很多 --Aaronyang的博客(www.ayjs.net)-www.8mi.me
1. 运算符,还有哪些你能学到?
1.1 不安全运算符: sizeof(.net framework1.0和1.1中的)、*、-> 、&
1.2 checked和unchecked运算符:溢出异常控制运算符
byte类型只能0-255的数,超过就会导致溢出。执行溢出检查用checked,禁止溢出检查用unchecked。
1.3 类型信息运算符:sizeof(可以确定栈中值类型需要的长度(单位:字节)) is as typeof
1.4 开发很少用到的 << 左位移 >> 右位移,同样的有 <<= 和 >>= 等同于 x=x>>y
1.5 只要稍微开发时间多一点,就会看到 int? x=1 很多类似这种形式的代码,标记值类型为可空类型,同样的还有 ??运算符,我在前面讲过了
1.6 运算符的优先级。。。我只能凭感觉,也没多大意义,类型转换大家都会
1.7 比较,还有 ReferenceEquals() 引用地址比较
1.8 运算符重载
在对自己定义的类或者结构进行 运算符(例如+-*%/等)操作,可以重载运算符
① 定义MyPoint(两个double)
public struct MyPoint { private double x, y; public MyPoint(double x, double y) { this.x = x; this.y = y; } public override string ToString() { return "("+this.x+","+this.y+")"; } }
②定义乘法*操作 : 格式: public static 返回值 operator 操作符(参数)
public static MyPoint operator *(MyPoint one, MyPoint two) { return new MyPoint(one.x * two.x, one.y * two.y); }
效果:
同样的你还可以定义其他操作,有些操作符特殊,必须成对重载,例如 ==和!= >和< >=和<=
1.9 类型的隐式和显示转换 重载
说白了,定义类型间隐式与显示的转换,不怎么常用,知道就好了。例如格式:
隐式转换 public static implicit operator float (MyFloat value),使用案例: float a=value;
显示转换 public static explicit operator MyFloat (float value),使用案例: MyFloat a=(MyFloat)value;
这里不局限于用系统内的类型,例如float,你也可以用其他的。
[AaronYang]C#人爱学不学[6]