520YAOER
强制转换和类型转换:
隐式转换
对于内置数值类型,如果要存储的值无需截断或四舍五入即可适应变量,则可以进行隐式转换。 例如,long 类型的变量(8 字节整数)能够存储 int(在 32 位计算机上为 4 字节)可存储的任何值。 在下面的示例中,编译器先将右侧的值隐式转换为 long 类型,再将它赋给 bigNum。
int num = 2147483647;
long bigNum = num;
short、int、long、float、double 或 decimal
short、ushort、int、uint、long、ulong、float、double 或 decimal
int、long、float、double 或 decimal
int、uint、long、ulong、float、double 或 decimal。
long、float、double 或 decimal
long、ulong、float、double 或 decimal
float、double 或 decimal
ushort、int、uint、long、ulong、float、double 或 decimal
double
float、double 或 decimal
  • 在从 int、uint、long 或 ulong 转换为 float,以及从 long 或 ulong 转换为 double 时,可能会丢失精度,但不会丢失量值。
  • 不存在针对 char 类型的隐式转换。
  • 浮点类型与 decimal 类型之间不存在隐式转换。
  • int 类型的常数表达式可以转换为 sbyte、byte、short、ushort、uint 或 ulong,前提是常数表达式的值处于目标类型的范围内。
显式转换
byte、ushort、uint、ulong 或 char
Sbyte 或 char
sbyte、byte、ushort、uint、ulong 或 char
sbyte、byte、short 或 char
sbyte、byte、short、ushort、uint、ulong 或 char
sbyte、byte、short、ushort、int 或 char
sbyte、byte、short、ushort、int、uint、ulong 或 char
sbyte、byte、short、ushort、int、uint、long 或 char
sbyte、byte 或 short
sbyte、byte、short、ushort、int、uint、long、ulong、char 或 decimal
sbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 decimal
sbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 double
(1)(int)强制类型转换
(int)强制类型转换:该转换方式主要是用于数字类型之间的转换,从int类型向 long,float,double,decimal类型转换可以用隐式转换,但从long型到int就需要使用显示转换,即使用该类型的转换方式否则产生编译错误。
该方式对于浮点数会无条件的舍去,会失去精确度。
对于char类型的到int类型的转换,传回的值是ASCII码。
实例:
double x = 1234.7;
int a;
//double强制转换int
a = (int)x;
Console.WriteLine(a);
//输出结果:1234
(2)int.Parse(string 变量名)字符串转换
int.Parse(string 变量名)字符串转换:该方式是将数字内容的字符串转换为int类型,如果字符串的内容为Null,则抛出ArgumentNullexception异常;如果字符串内容不是数字则抛出FormarException异常.
使用该方法只能处理字符串的内容,而且转换后的字符串内容要在int类型的可表示范围之内。
(3)int.TryParse(string s,out int result) 
int.TryParse(string s,out int result) 该方式也是将数字内容的字符串转换为int类型,但是该方式有比int.Parse优越的地方,就是它不会出现异常,最后一个参数result是输出值,如果转换成功则输出相应的值,转换失败则输出0.
(4)Convert.ToInt32
可以转任意转换类型
Convert.ToInt32该方式不仅可以将字符串类型转换为int,还可以将其他类型转换为Int,变量若为object或string类型,当其值为Nul时,会传回0,不会造成程序错误如果转换成功则输出相应得值,转换失败则输出0,不会造成程序错误,但若是此string类型的值为string.Empty,转换成int时,程序仍会出错.
该方式对于float类型做四舍五入.
该方式同强制类型转换一样在处理char类型的时候,返回的都是ASCII码
  示例: int intValue1 = "123".ConvertTo<int>(); 
    int intValue2 = "123".ConvertTo<int>(); 
    DateTime dateTimeValue1 = "1981-08-24".ConvertTo<DateTime>(); 
    DateTime? dateTimeValue2 = "1981-08-24".ConvertTo<DateTime?>();

分类:

技术点:

相关文章: