C#入门到精通系列课程——第3章变量及运算符 (12)

二、使用逻辑运算符判断用户输入的用户名和密码是否同时满足条件,如果是,输出“登录成功”,否则,输出“登录失败”。提示:默认的用户名和密码分别是mr和mrsoft,另外,该程序实现时需要用到关系运算符“==”和条件运算符“?:”。登录成功和失败的效果分别如图3.34和图3.35所示。

C#入门到精通系列课程——第3章变量及运算符

 

 

3.6  数据类型转换

类型转换是将一个值从一种数据类型更改为另一种数据类型的过程。例如,可以将string类型数据“457”转换为一个int类型,也可以将任意类型的数据转换为string类型。

数据类型转换有两种方式,即隐式转换与显式转换。如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的;而把高精度数据类型向低精度数据类型转换,则必然会有信息丢失,甚至有可能失败,这种转换规则就像如图3.36所示的两个场景,高精度相当于一个大水杯,低精度相当于一个小水杯,大水杯可以轻松装下小水杯中所有的水,但小水杯无法装下大水杯中所有的水,装不下的部分必然会溢出。

C#入门到精通系列课程——第3章变量及运算符

 

 

3.6.1  隐式类型转换

隐式类型转换就是不需要声明就能进行的转换,进行隐式类型转换时,编译器不需要进行检查就能自动进行转换。下列基本数据类型会涉及数据转换(不包括逻辑类型),这些类型按精度从“低”到“高”排列的顺序为byte < short < int < long < float < double,可对照图3.37,其中char类型比较特殊,它可以与部分int型数字兼容,且不会发生精度变化。

C#入门到精通系列课程——第3章变量及运算符

 

 例如,将int类型的值隐式转换成long类型,代码如下:

C#入门到精通系列课程——第3章变量及运算符

 

 

3.6.2  显式类型转换

有很多场合不能隐式地进行类型转换,否则编译器会出现错误,例如,下面的类型在进行隐式转换时会出现错误:

◆int类型转换为short类型——会丢失数据

◆int类型转换为uint类型——会丢失数据

◆float类型转换为int类型——会丢失小数点后面的所有数据

◆double类型转换为int类型——会丢失小数点后面的所有数据

◆数值类型转换为char类型——会丢失数据"

◆decimal类型转换为其他数值类型——decimal类型的内部结构不同于整数和浮点数

如果遇到上面类型之间的转换,就需要用到C#中的显式类型转换。显式类型转换也称为强制类型转换,它需要在代码中明确地声明要转换的类型。如果要把高精度的变量转换为低精度的变量,就需要使用显式类型转换。

显式类型转换的一般形式为:

C#入门到精通系列课程——第3章变量及运算符

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如,下面的代码用来把x转换为float类型:

 

C#入门到精通系列课程——第3章变量及运算符

 

 通过显式类型转换,就可以解决高精度数据向低精度转换的问题,例如,将double类型的值4.5赋值给int类型变量时,可以使用下面的代码实现:

C#入门到精通系列课程——第3章变量及运算符

3.6.3  使用Convert类进行转换

在3.6.2节中讲解了可以使用“(类型说明符)表达式”进行显式类型转换,使用这种方式实现将long型数据转换成int型数据:

C#入门到精通系列课程——第3章变量及运算符

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxyxx.html