Reading C#高级编程(第四版)………………………………………………………………………………………………………………………………………………………
1、使用checked和unchecked:
byte b=255;
checked {
b++;
}
此时会抛异常,也可以在编译选项中设置,但是无论如何都需要作者自己考虑清楚是否会溢出
2、is和as,typeof
is用于判定类型,as用于做转换,typeof用于求类型
3、运算规则
规则一:null和任何东西运算结果都是null,比较结果是false
int? x;表示x可为null
b=x ?? 10;如果x是null则b为10
规则二:隐式转换遵从小到大的原则
不满足该规则的要进行显示转换 int i=(int)12000000000000
string s;
int i=int.Parse(s);
4、装箱与拆箱
int i=20;
object o=i;
int j=(object )o;
值类型的对象会被复制到堆上
5、比较
RefrenceEqual
virtual Equals 比较可靠
static Equals
operator ==
6、操作符重载必须声明为 public static
一些重载操作符成对出现
==重载时不要使用Equals来判断
7、自定义类型的转换
public static implicit operator float(Currency value)
public static implicit operator Currency (float value)
转换时要注意小数精度损失的问题
非继承关系的类类型也可以用上述方法转换