隐式转换
当对简单的值类型进行转换时,如果是按照 Byte,short,int,long,float,double从左到右(从短到长)进行转换的时候,可以直接进行转换(隐式转换)。简言之,要进行隐式转换,首先两种类型必须是相兼容的,如int和double是相兼容的;其次,要从小类型向大类型转换,这样的话,小类型的数据不会丢失精度。而如果要从大类型转换到小类型,会提示“无法将double类型隐式转换为int类型”简单的代码示例:
static void Main(string[] args)
{
int a = 10;
double b = a;
Console.WriteLine("b的值为:"+b);
Console.ReadKey();
}
显示转换
显示转换是相对于隐式转换而言的,依然是对值类型进行转换时,从类型转换成小类型。直接转换的话,编译器会提示“无法将*类型转换为*类型*,存在一个显示转换”,这时需要进行强制转换(显示转换)。必须指出的是,显示转换会降低数据精度。简单的代码示例:
static void Main(string[] args)
{
double a = 50.64;
int b = (int)a;
Console.Write("b的值为:"+b);
Console.ReadKey();
}
如上的显示结果是b等于50,精度降低。
每种数据类型都存在自身的范围,例如byte类型的范围是0-255,int型的范围是0-65535,当int型转换成byte类型时,如果超出了自身的范围时会怎么处理呢?看下代码示例:
Static void Main(string[] args)
{
int a = 256;
byte b = (byte)a;
Console.Write("b的值为:"+b);
Console.ReadKey();
}
这段代码的运行结果 “b的值为0”,如果把a的值改为257,则b的值为1。结果是怎么来的,编译器会把256转换成对应的二进制,也就是100000000,当转换成byte类型时(8位二进制数),会长出8位的部分截掉,因此结果变成了0。
ToString()转换
当把值类型转换成字符串类型时,可以直接调用值类型的方法ToString()进行转换,另外ToString还可以将结果转换成相应的进制形式,简单的代码示例:
staticvoid Main(string[] args)
{
//转换为对应的字符串类型
int a = 256;
string b =a.ToString();
Console.Write("b的值为:"+b);
Console.ReadKey();
}
static void Main(string[] args)
{ //转换为十六进制形式(X可以换为小写,代表对应的a-f的大小写) int a = 256;
string b =a.ToString("X"); //输出结果为“b的值为100” Console.Write("b的值为:"+b);
Console.ReadKey();
}
parse方法
像int、long、float类型都有parse方法,可以将字符串转换为对应的数据类型,简单的代码实例:
staticvoid Main(string[] args)
{
int a = 256;
string b ="256";
if (int.Parse(b) ==a)
{
Console.Write("a=b");
Console.ReadKey();
}
Convert类
Convert有很多的转换数据类型的方法,它将继承自Object类型的对象转换为制定的类型,即Convert.toInt32()(还有对应其他类型的转换)。
另外的一种方法:Convert.ChangeType(Object,Type),这种方法在涉及到泛型时会显现出优势。
------- Windows Phone 7手机开发、 .Net培训、期待与您交流! -------