隐式转换
byte, short, int, long, fload, double等根据其顺序向后可以隐式自动完成类型的转换,隐式转移的前提是目标类型精度高于源类型,如:short隐式转换为int,因其int精度高于short,所以隐式完成转换后,其数据不丢失。如果需要逆向转换,就必须强制转换,强制转换的代价是就是精度丢失、数据溢出。
float v1 = (float)345.22; long v2 = long.MaxValue; int v3 = (int)v1; //强制转换,损失精度 return 345 int v4 = (int(v2); //强制转换,数据溢出 return -1;
使用Convert类转换数据类型
Convert类可以实现基本类型间的数据转换,Convert.ToString() Convert.ToInt32()……。
各种返回测试
int value = Convert.ToInt32("123"); //return 123 int value = int.Parse("123"); //return 123; int value = (int)2.5; //截断:return 2; int value = Convert.ToInt32(2.5); //以为会四舍五入,实测为五舍六入?即:2.5 return 2, 2.6 return 3; int value = Convert.ToInt32(""); // throw System.FormatException Convert.ToString(null); //return null; Convert.ToString(DBNull.Value); //return ""; DbNull.Value as string // 类型转换异常 null as string //return null;