自动类型转换
条件:
- 类型兼容,比如:int类型和double类型兼容,string类型和char类型兼容。
- 目标类型精确度大于源类型精确度,比如:double类型精确度高于int类型。
举例:
int num1 = 10;
double num2 = num1;
//结果num2值为:10,类型为:double。
强制类型转换
条件: 类型兼容,同上
举例:
double num1 = 1.13;
int num2 = num1; //报错,无法转换,因为double类型精度高于int类型
int num2 = (int)num1; //强制转换,结果为:num2=1,删除小数点
不兼容类型转换:方式一
将字符串转成数字: Convert.ToInt32(s),Convert.ToDouble(s)
string s1 = "123";
int i = 456;
string s2 = "0.456";
Console.WriteLine("s1+i={0}", s1+i); //结果:s1+i=123456,因为s1是字符串,+号为连接符
int n1 = Convert.ToInt32(s1); //把string类型转换成int类型,n1=123
Console.WriteLine("n1+i={0}", n1+i); //结果:n1+i=579
double n2 = Convert.ToDouble(s2); //把string类型转换成double类型,n2=0.456
Console.WriteLine("n1+n2={0}", n1+n2); //结果:n1+n2=123.456
将数字转换成字符串: Convert.ToString(n)
int i = 123;
double d = 0.456;
Console.WriteLine("i+d={0}", i+d); //结果:i+d=123.456
string s1 = Convert.ToString(i); //把int类型转成string类型,s1="123"
string s2 = Convert.ToString(d); //把int类型转成string类型,s1="0.456"
Console.WriteLine("i+d={0}", s1+s2); //结果:i+d=1230.456
不兼容类型转换:方式二
将字符串转成数字: int.Parse("数字字符"),double.Parse("数字字符")
string s1 = "123";
int i = 456;
string s2 = "0.456";
Console.WriteLine("s1+i={0}", s1 + i); //结果:s1+i=123456,因为s1是字符串,+号为连接符
int n1 = int.Parse(s1); //把string类型转换成int类型,n1=123
Console.WriteLine("s1+i={0}", n1 + i); //结果:n1+i=579
double n2 = double.Parse(s2); //把string类型转换成double类型,n2=0.456
Console.WriteLine("s1+s2={0}", n1 + n2); //结果:n1+n2=123.456
将数字转换成字符串: char.Parse(单个数字)
int i = 1;
double d = 0.456;
Console.WriteLine("i+d={0}", i+d); //结果:i+d=123.456
string s1 = char.Parse(i); //把int类型转成string类型,s1="1"
Console.WriteLine("i+d={0}", s1+s2); //结果:i+d=1230.456
不兼容类型转换:方式三
将字符串转成数字:
int.TryParse("数字字符",out 变量),double.TryParse("数字字符",out 变量)
int.TryParse("123",out i),double.TryParse("0.456",out d)
TryParse特点:
相比前两种方式,TryParse会自动处理异常
版权声明:本文为shenqiankk原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。