在C#中,允许数据类型之间相互转换,当数据从低精度转换成为高精度的时候,可以不做任何的处理,隐式的转换。但是当高精度向低精度转换的时候,一定要显式的转换。
5.1、高精度数值转换成为低精度数值
(1)、double转换成为float
float a = (float)13.55;
float a = 13.55f;
(2)、double转换成为int
int b = (int)20.76;//b==20,直接取整数部分而不会进行四舍五入.
(3)、float转换成为int
int c = (int)20.75f;
5.2、数值与字符串之间的转换
在C#中,类型是非常严格的,字符串与数值之间的的转换要显式的转换,而且还要这个字符串是能够转换成为数值的。
5.2.1、Parse将数值字符串转换成为数值
A、将双精度字符串转换成为双精度数值
double a = double.Parse("20.25");//a==20.25
B、将整数字符串转换成为整数数值
int a = int.Parse("20");//a==20
int kk = int.Parse("20.01");//错误
5.2.2、ToString将数值转换成为字符串
int a = 20;
string s = a.ToString();//s=="20"
5.2.3、Convert
int b = Convert.ToInt32("25");//b==25
double d = Convert.ToDouble("20.25");//d==20.25
int b = Convert.ToInt32("20.7");//错误
int b = Convert.ToInt32(20.7);//b==21,会四舍五入
double d = Convert.ToDouble(20);//d==20.0
string s = Convert.ToString(20);//s=="20"
5.2.3.1、Convert.DBNull属性
Convert.DBNull:一个常数,表示数据库某行某列值在数据库中是null,数据库中的null经过DataSet.Tables[0].Rows[i][j]取出来之后,是object类型的,它就等于Convert.DBNull,不等于.net中的null,即:Convert.DBNull != null,DataSet.Tables[0].Rows[i][j].Tostring()之后是长度为0的字符串。
5.2.3.1、Convert.IsDBNull函数
publicstaticboolIsDBNull (Objectvalue)
返回有关指定对象是否为 DBNull类型的指示
5.3、小结
对于数值类型的数据,没有初始化的话,默认为0;对于引用类型的数据,没有创建的话就默认为null。
对于字符串,如果两个字符串引用的值是相同的,那么两个引用的地址就是一样的,因为有一个字符串池的概念。
长度为0的字符串是非null的,定义一个字符串后没有初始化才是null;在sqlserver 2005数据库中,长度为0的字符串与null也是不一样的,null代表什么都没有。
2009-02-19