c#转换2020.7.8

隐式转换

程序语言自动转化。

从更少的位数转换为更多的位数,转换的时候精度不会丢失。

下面这张图展示了隐式转换
c#转换2020.7.8

强制转换

(目标类型)原类型
(int)float

可能会导致精度丢失。

溢出检测上下文

checked unchecked运算符控制表达式的溢出检测上下文。表达式放在一对小括号内,并且不能时一个方法。
check(表达式)
unchecked(表达式)

显式数字转换

整数转换为整数
如果转换之后的位数不足以储存,检测会抛出一个异常。

float、double转换到整数
(1)截掉小数部分,转换为整数
(2)截掉小数,仍然储存不下,检测就会抛出异常

decimal到整数
值不在目标类型范围内,就会抛出异常。

double到float
(1)被舍弃到最接近的float
(2)如果值太小不能用float表示,值会被设置为+0或者-0
(3)值太大不呢个用用float表示,值被设置为正无穷、负无穷

is运算符

有些转换是不会成功的,可以用is运算符来做检测