版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34536551/article/details/84097719
目录
隐式转换
● 即使两个变量存储的信息相同,使用不同的类型解释它们时,方式也是不同的。
● 注意: bool 和 string 没有隐式转换; char 存储的是数值,所以 char 被当作数值类型。
● 这些类型的隐式转换规则是: 任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可以隐式转换为类型B。
● short 类型的变量可以存储 -32768到32767 之间的整数, 而byte 可以存储的最大值是 0到255, 所以如果把 short 转换为 byte 就会出问题。 如果short类型的变量存储的是256到32767之间的数, 相应数值就不能放在byte 中。
如果说short 类型变量中的存储的数值小于255,short 就可以转换byte , 但是需要显式转换。
显式转换
● 语法为:
(要转换成的数据类型)表达式
注意: 这只是在特殊的情况下可行的,彼此之间几乎没有什么关系的类型或根本没有关系的类型不能进行强制换行。
short source = 7;
byte temp = (byte)source ; // short 类型显示转换为byte 类型
● 关键字 checked 和 unchecked 可以检查一个值放在一个变量中时, 如果该值过大, 就会导致溢出,这就需要检查。
语法为:
checked(表达式);
unchecked(表达式);
static void Main(string[] args)
{
short sourceVar = 281;
byte destinationVar = checked((byte)sourceVar);
WriteLine($"{destinationVar}");
WriteLine($"{sourceVar}");
}
● 注意: 关键字unchecked 替代 checked ,就会得到以前同样的结果,不会出现错误,与默认的做法相同。
● 注意:两个 short 值相乘的结果并不会返回一个 short值, 因为这个操作的结果很可能大于 3267(这是short类型可以存储的最大值), 操作的结果为int 值。