C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。 C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。
隐式数值转换包括以下几种
从 sbyte 类型到short, int, long, float, double, 或 decimal 类型
从 byte 类型到short, ushort, int, uint, long, ulong, float, double, 或decimal 类型
从 short 类型到int, long, float, double, 或decimal 类型
从 ushort 类型到int, uint, long, ulong, float, double, 或decimal 类型
从 int 类型到long, float, double, 或decimal 类型
从 uint 类型到long, ulong, float, double, 或decimal 类型
从 long 类型到float, double, 或decimal 类型
从 ulong 类型到float, double, 或decimal 类型
从 char 类型到ushort, int, uint, long, ulong, float, double, 或decimal 类型
从 float 类型到double 类型
其中从int, uint, 或 long 到float 以及从long 到double 的转换可能会导致精度下
降但决不会引起数量上的丢失其它的隐式数值转换则不会有任何信息丢失
结合我们在数据类型中学习到的值类型的范围我们可以发现隐式数值转换实
际上就是从低精度的数值类型到高精度的数值类型的转换
从上面的10 条我们可以看出不存在到char 类型的隐式转换这意味着其它整型
值不能自动转换为char 类型这一点需要特别注意
三元操作符?: 有时也称为条件操作符
对条件表达式b? x: y 先计算条件b 然后进行判断如果b 的值为true 计算x的值
运算结果为x 的值否则计算y 运算结果为y 的值一个条件表达式从不会又计算x 也计算y 条件操作符是向右关联的也就是说从左向右分组计算例如
表达式a? b: c? d: e 将按a? b: (c? d: e)形式执行