热门IT资讯网

五、数据类型转换

发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _5.数据类型转
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _5.数据类型转换{    class Program    {        static void Main(string[] args)        {            // 隐式类型转换            {                ushort destinationVar;                char sourceVar = 'a';                                // 下面这条语句把char类型隐式转换成ushort类型。                destinationVar = sourceVar;                Console.WriteLine("sourceVar val: {0}", sourceVar);                Console.WriteLine("destinationVar val: {0}", destinationVar);            }                        // 显式类型转换            {                byte destinationVar;                short sourceVar = 7;                                // 下面这条语句把short类型显式转换成byte类型。                // 如果不强制类型转换,会出现编译错误。                destinationVar = (byte)sourceVar;                Console.WriteLine("sourceVar val: {0}", sourceVar);                Console.WriteLine("destinationVar val: {0}", destinationVar);            }                        // 表达式的溢出检查上下文            {                byte destinationVar;                short sourceVar = 281;                                // byte类型的最大值255,所以此语句进行强制类型转换后会溢出。其结果为25                destinationVar = (byte)sourceVar;                // destinationVar = checked((byte)sourceVar);                 // 上面这条语句进行溢出检查时,会出现OverflowException异常。                // destinationVar = unchecked((byte)sourceVar);                 // 上面这条语句表示不进行溢出检查和不加此溢出检,查结果是一样的。                Console.WriteLine("sourceVar val: {0}", sourceVar);                Console.WriteLine("destinationVar val: {0}", destinationVar);            }                        // 使用Convert类方法进行转换            {                bool boolVal = true;                double doubleVar = 99.999;                string stringResult;                string stringVal = "17";                int integerVal = 67;                long longResult;                                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. 基本类型隐式转换表 * 类型   可以安全转换为 * byte   short,ushort,int,uint,long,ulong,float,double,decimal * sbyte  short,int,long,float,double,decimal * short  int,long,float,double,decimal * ushort int,uint,long,ulong,float,double,decimal * int    long,float,double,decimal * uint   long,ulong,float,double,decimal * long   float,double,decimal * ulong  float,double,decimal * float  double * char   ushort,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关键字不起作用。 */


0