Keep on going never give up.

Let's Go

C# 学习笔记(19)隐式转换与显式转换

C#Lonely2019-05-06 16:01:0734次0条

C#提供了两种数据类型的相互转换:隐式转换与显式转换。

隐式转换:当数据从“小类型”转换成“大类型”时,被称为隐式转换。隐式转换是由编译器自动完成的,该转换是一种类型安全的转换,不会导致数据丢失,因此不需要人工干预进行转换也不需要任何特殊的语法。

显式转换:当数据从“大类型”转换为“小类型”时,被称为显示转换也叫强制类型转换(强转),显式转换需要用户明确地指定转换的类型,且有可能导致精度丢失。

举个最简单的栗子来看代码示例:

//隐式转换
int a = 100;
double b = a; //double是浮点型,int是整型 ,浮点型值的范围比整型值的范围要大,当“小容器”的东西要装进“大容器”时肯定能装下嘛,所以安全转换了。
Console.WriteLine(b); //输出了100
             
//显式转换
double c = 300.985; 
int d = (int)c; //当double这个“大容器”里的东西要装进int这个“小容器”的时候,就需要强制转换了,装不下的部分就丢失了。
Console.WriteLine(d); //输出了300,小数部分丢失了

double e = 300;
int f = (int)e;
Console.WriteLine(f); //输出了300
Console.ReadKey();

结论:

当被转换类型的值的范围小于转换目标类型的值的范围时可以进行隐式转换,否则隐式转换时编译器会报异常。也就是说大存储容量的数据类型可以容纳小存储容量的数据类型,反之则不行。

隐式转换要具备的条件:

1、被转换类型的值范围必须在目标类型的值范围之内;

2、被转换类型的值必须与目标类型兼容。


显示转换要具备条件:

1、被转换类型的值要在目标类型的值范围之内,如果超出目标类型的最大或最小值,则编译器会抛出异常,转换失败。

2、被转换类型的值同样必须与目标类型互相兼容。


在使用强制转换时要能够明白可能会造成什么样的损失,以及以合理的方式使用它们,才能在使用过程中造成不必要的损失。




暗锚,解决锚点偏移

文章评论

    嘿,来试试登录吧!