@作者: 风不停息丶
基本类型转换
变量声明后,类型固定了,只能赋某种类型的数值,如果要赋值其他类型的数据就需要将其他类型转换为该类型。
例如︰从控制台中获取用户输入的内容,其结果只能为string类型。若想得到其他类型数据,必须做类型转换。
Console.WriteLine("请输入年龄");
string strAge = Console.ReadLine();
int i = int.Parse(strAge);//Parse方法
隐式转换
由小类型到大类型的自动转换。
多种类型变量参与的运算,会产生类型提升其中一方为long类型,结果为long类型
其中一方为float类型,结果为float类型
其中一方为double类型,结果为double类型
其中一方为decimal类型,结果为decimal类型
其余运算结果为int类型
隐式数值转换包括以下几种:
从 sbyte 类型到 short,int,long,float,double,或 decimal 类型。
从 byte 类型到 short,ushort,int,uint,long,ulong,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 类型。
从 char 类型到 ushort,int,uint,long,ulong,float,double,或 decimal 类型。
从 float 类型到 double 类型。其中,从 int,uint 或 long 到 float 以及从 long 到 double 的转换可能会导致精度下降,但决不会引起数量上的丢失。其它的隐式数值转换则不会有任何信息丢失。
int i=1;
long l=i;
long result = i+l;//隐式转换:由小范围到大范围的自动类型转换(一定可以成功)
显式转换
由大类型到小类型的强制转换。
强制类型转换的语法如下:
- 数据类型变量名 = (数据类型) 变量名或值;
这里要求等号左、右两边的数据类型是一致的。例如将 double 类型转换成 int 类型,代码如下。
这样虽然能将值进行类型的转换,但损失了数据的精度,造成了数据的不准确,因此在使用强制类型转换时还需要注意数据的准确性。
double dbl_num = 12345678910.456;
int k = (int) dbl_num ;//此处运用了强制转换
浮点型和decimal类型之间不存在隐式转换。因此,必须使用显式转换。
非整形只能显式转换到整形。
ToString转换
任意类型转换为字符串类型。
int num = 100;
string strNumber = num.ToString();
Parse转换
字符串类型转换为其他类型
string strNumber = "100";
int num = int.Parse(strNumber);
若字符串未被识别为该类型的有效值,则程序抛异常。
int number01 = int.Parse("1.0");//输出会报错
float number02= float.Parse("1.0f");//输出会报错
C# 提供的一系列内置的类型转换方法
- 如下表所示:
方法 | 描述 |
---|---|
ToBoolean | 将类型转换为布尔型 |
ToByte | 将类型转换为字节类型 |
ToChar | 将类型转换为单个 Unicode 字符类型 |
ToDateTime | 将类型(整数或字符串类型)转换为日期时间的结构 |
ToDecimal | 将浮点型或整数类型转换为十进制类型 |
ToInt16 | 将类型转换为 16 位整数类型 |
ToInt32 | 将类型转换为 32 位整数类型 |
ToInt64ToInt64 | 将类型转换为 64 位整数类型 |
ToSbyte | 将类型转换为有符号字节类型 |
ToSingle | 将类型转换为小浮点数类型 |
ToString | 将类型转换为字符串类型 |
ToType | 将类型转换为指定类型 |
ToUInt16 | 将类型转换为 16 位无符号整数类型 |
ToUInt32 | 将类型转换为 32 位无符号整数类型 |
ToUInt64 | 将类型转换为 64 位无符号整数类型 |