五、数据类型转换
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace_5.数据类型转换{classProgram{staticvoidMain(string[]args){//隐式类型转换{ushortdestinationVar;charsourceVar='a';//下面这条语句把char类型隐式转换成ushort类型。destinationVar=sourceVar;Console.WriteLine("sourceVarval:{0}",sourceVar);Console.WriteLine("destinationVarval:{0}",destinationVar);}//显式类型转换{bytedestinationVar;shortsourceVar=7;//下面这条语句把short类型显式转换成byte类型。//如果不强制类型转换,会出现编译错误。destinationVar=(byte)sourceVar;Console.WriteLine("sourceVarval:{0}",sourceVar);Console.WriteLine("destinationVarval:{0}",destinationVar);}//表达式的溢出检查上下文{bytedestinationVar;shortsourceVar=281;//byte类型的最大值255,所以此语句进行强制类型转换后会溢出。其结果为25destinationVar=(byte)sourceVar;//destinationVar=checked((byte)sourceVar);//上面这条语句进行溢出检查时,会出现OverflowException异常。//destinationVar=unchecked((byte)sourceVar);//上面这条语句表示不进行溢出检查和不加此溢出检,查结果是一样的。Console.WriteLine("sourceVarval:{0}",sourceVar);Console.WriteLine("destinationVarval:{0}",destinationVar);}//使用Convert类方法进行转换{boolboolVal=true;doubledoubleVar=99.999;stringstringResult;stringstringVal="17";intintegerVal=67;longlongResult;stringResult=Convert.ToString(boolVal)+Convert.ToString(doubleVar);Console.WriteLine("stringResult: {0}",stringResult);longResult=integerVal+Convert.ToInt64(stringVal);Console.WriteLine("longResult: {0}",longResult);}Console.ReadKey();}}}/***一、数据类型转换*1.基本概念*a)不同类型的变量使用不同的模式来表示数据。*b)它们占用的存储空间可能相同,也许目标类型有足够的存储空间包含所有的源数据位,结果也有可能与期望不同。**2.数据类型转换分类*可分为隐式类型转换和显式类型转换。**二、隐式类型转换*1.基本概念*从类型A到类型B的转换可以在所有情况下进行,执行转换规则非常简单,可以让编译器执行转换。**2.隐式转换规则*任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可以进行隐式转换为类型B。**3.基本类型隐式转换表*类型可以安全转换为*byteshort,ushort,int,uint,long,ulong,float,double,decimal*sbyteshort,int,long,float,double,decimal*shortint,long,float,double,decimal*ushortint,uint,long,ulong,float,double,decimal*intlong,float,double,decimal*uintlong,ulong,float,double,decimal*longfloat,double,decimal*ulongfloat,double,decimal*floatdouble*charushort,int,uint,long,ulong,float,double,decimal**bool和string类型没有隐式转换。**三、显式类型转换*1.基本概念*从类型A到类型B的转换只能在某些情况下进行,转换规则比较复杂,应进行某种类型的处理。**2.转换规则*强迫数据从一种类型转换为另一种类型。*其语法为:*<(destinationType)sourceVar>;*此种转换只能在某种情况下才是可行的。彼此之间没有关系的类型或根本没有关系的类型不能进行强制转换。**四、表达式的溢出检查上下文*1.简单检查源变量的值,把它与目标变量的取值范围进行比较。*2.迫使系统特别注意运行期间的转换。*使用checked和unchecked关键字进行表达式的溢出检查上下文。*其使用语法:*checked(expression)<检查表达式是否溢出,如出现溢出情况会抛出OverflowException异常>*unchecked(expression)<对表达式溢出情况不进行检查>**五、使用Convert类进行显式转换*1.数值的有效表达方式*首先是一个可选符号(加号或减号),然后是0位或多位数字,一个句点后跟一位或多位数字,接着是一个可选的e或E,*后跟一个可选符号和一位或多位数字(在这个序列之前或之后)和空格。**2.转换方法*//整数类型*Convert.ToByte(val)val转换为byte*Convert.ToSByte(val)val转换为sbyte*Convert.ToInt16(val)val转换为short*Convert.ToUInt16(val)val转换为ushort*Convert.ToInt32(val)val转换为int*Convert.ToUInt32(val)val转换为uint*Convert.ToInt64(val)val转换为long*Convert.ToUInt64(val)val转换为ulong**//浮点类型*Convert.ToSingle(val)val转换为float*Convert.ToDouble(val)val转换为double*Convert.ToDecimal(val)val转换为decimal**//布尔类型*Convert.ToBoolean(val)val转换为bool**//字符类型*Convert.ToChar(val)val转换为char**//字符串类型*Convert.ToString(val)val转换为string**使用以上类型转换方式总是会进行溢出检查,checked和unchecked关键字不起作用。*/
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。