c# 数据类型转换

隐式转换

  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;

 

posted @ 2017-02-27 11:37  水手哥  阅读(148)  评论(0编辑  收藏  举报