当前位置 : 主页 > 网络编程 > net编程 >

类型转换

来源:互联网 收集:自由互联 发布时间:2023-09-03
在C#中进行类型转换 .​ 一、简单的数值类型转换 ​ 在JAVA中,我们知道存在两种转换形式,自动类型转换和强制类型转换,在C#中,我们可以把这两种类型转换称之为隐式类型​ 转换


在C#中进行类型转换 .​

一、简单的数值类型转换

在JAVA中,我们知道存在两种转换形式,自动类型转换和强制类型转换,在C#中,我们可以把这两种类型转换称之为隐式类型​

转换和显式类型转换。转换的方法和JAVA中一样。​

1.隐式类型转换​

对于数值类型,类型A的取值范围只要完全包含在类型B中,那么类型A就可以隐式转换为类型B​

例如整型数值(int)A就可以隐式转换为浮点型(double).​

2.显式类型转换​

与隐式转换相反,只要把取值范围大的转换为取值范围小的,就需要用到显式类型转换。​

double score = 85.5;​

int add = 2;​

int finalScore = (int)score + add;​

以上这两种转换方式主要适用于数值类型之间的转换。​

强制类型转换 强制类型转换
当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
、显式强制类型转换
显式强制类型转换需要使用强制类型转换运算符,格式如下:
(<expression>)

(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。
、隐式强制类型转换
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回,如:


;//执行本句后,nVar的值为3,而dVar的值仍是3.88

1,若已知x,y为double类型,则表达式:x=1,y=x+3/2结果是多少啊?
因为x,y都是double型,所以执行了y=x+3/2这个语句后,会输出小树部分,double型默认的是小数点后几位我忘了,你自己调试下,就会明白了!

二、数值类型与字符串之间的转换

上一种方式主要适用于数值类型之间的转换。​

那么数值类型与字符串类型之间怎么转换呢?​

1.字符串转换为数值型​

在C#基础课程中,我们知道了从控制台接受数值类型的方法如下:​

int score = int.parse(Console.ReadLine());​

当我们要把字符串转换为数值类型时,可以使用Parse()方法。不同的数值类型都有自己的Parse()方法。​

字符串转换为整型​

int.Parse(string);​

字符串转换为单精度浮点型​

float.Parse(string);​

字符串转换为双精度浮点型​

double.Parse(string);​

注意:要转换的字符串必须是数字的有效表达式。​

2.数值型转换为字符串​

将数值类型转换为字符串需要使用到ToString()方法​

int age = 20;​

string myAge = age.ToString();​

三、使用Convert类进行类型转换

上面的Parse()方法是用来将字符串类型转换类数值类型的,我们再来认识一个更厉害的--Convert类,它能够在基本类型之间相互转换。Convert类为每一种都提供了一个静态方法。​

Convert.ToInt32(); //转换为整型​

Convert.ToSingle(); //转换为单精度浮点型​

Convert.ToDouble(); //转换为双精度浮点型​

Convert.ToString(); //转换为字符串类型​

Convert类为每种类型转换都提供了一个静态方法,所以可以直接通过类型.方法名调用。

举个例子:​

Code:

01.Class Demo

02.{

03. static void Main(string [] args)

04. {

05. double score = 85.6;

06. int myInt;

07. float myFloat;

08. string myString;

09.

10. Console.WriteLine("原始类型为double:{0}",score);

11.

12. myInt = Convert.ToInt32(score);

13. myFloat = Convert.ToSingle(score);

14. myString = Convert.ToString(score);

15.

16. Console.WriteLine("转换后:");

17.

18. Console.WriteLine("int /t float /t string");

19.

20. Console.WriteLine("{0}/t{1}/t{2}",myInt,myFloat,myString);

21. }

22.}

运行结果:​

int float string​

86 85.6 85.6​

值得注意的是在前面显式类型转换时,将double类型显式转换为int类型时,结果是85,而用Convert类进行转换时,结果却是86。结论是利用显式类型转换时,将忽略小数位,就相当于利用SQL中的函数floor()效果一样。而利用Convert类进行转换是,将采用四舍五入的方法。

上一篇:Unity下如何实现RTMP或RTSP流播放和录制
下一篇:没有了
网友评论