C# .NET 类型转换

自动类型转换

条件:

  1. 类型兼容,比如:int类型和double类型兼容,string类型和char类型兼容。
  2. 目标类型精确度大于源类型精确度,比如: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版权协议,转载请附上原文出处链接和本声明。