摘要
类型转换就是把数据从一种类型转换为另一种类型。在C#中,类型转换有两种形式:
- 隐式类型转换 这些转换是C#默认的以安全方式进行的转换,不会导致数据丢失。例如:从小的整数类型转换为大的整数类型,从派生类转换为基类。
- 显式类型转换 显式类型转换即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
正文
隐式类型转换
int a = 10;
double b = a;//将int隐式转换为double,从低到高
float f = 3.14f;
b = f;//将float转换为double,从低到高
~~float g = b;//这个就会出错了,double比float要高~~
Console.WriteLine(a);
Console.WriteLine(b);
image.png
- 从 sbyte 类型到 short,int,long,float,double,或 decimal 类型。
- 从 byte 类型到 short,ushort,int,uint,long,ulong,float,double,或 decimal 类型。
- 从 short 类型到 int,long,float,double,或 decimal 类型。
- 从 ushort 类型到 int,uint,long,ulong,float,double,或 decimal 类型。
- 从 int 类型到 long,float,double,或 decimal 类型。
- 从 uint 类型到 long,ulong,float,double,或 decimal 类型。
- 从 long 类型到 float,double,或 decimal 类型。
- 从 ulong 类型到 float,double,或 decimal 类型。
- 从 char 类型到 ushort,int,uint,long,ulong,float,double,或 decimal 类型。
- 从 float 类型到 double 类型。
注:隐式数值转换就是从低精度的数值类型到高精度的数值类型的转换。
byte b = 10;
int i = b;
Console.WriteLine(i);
uint x = 100;
long y = x;//这里要是将uint转int也会出错,转long没有出错
Console.WriteLine(y);
image.png
int x = 100;
double y = 3.14;
double z = x + y;
Console.WriteLine(z);
char a = 'A';//65
double d = 1.2;
Console.WriteLine(a+d);
image.png
显式类型转换
显式类型转换即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
强制类型转换主要用于将存储范围大的数据类型转换成存储范围小的、但数据类型需要兼容。
转换语法:
数据类型变量名=(数据类型)变量名或值
double x = 4.2425;
int y = (int)x;
Console.WriteLine(y);
Parse****方法
Parse方法用于将字符串类型转换成任意基本类型,基本所有数据类都有这个方法
string x = "123";
Console.WriteLine(int.Parse(x));
string y = "10.8";
Console.WriteLine(double.Parse(y));
TryParse方法
string x = "123";
int y = 0;
bool ret = int.TryParse(x, out y);//如果转换出错,返回false,如果正确,y就等于转换后的值
Convert方法
Convert方法是数据类型转换中最灵活的方法,它能够将任意数据类型的值转换成任意数据类型,前提是不要超出指定数据类型的范围。
方法 | 说明 |
---|---|
Convert.ToInt16() | 转换为整型(short) |
Convert.ToInt32() | 转换为整型(int) |
Convert.ToInt64() | 转换为整型(long) |
Convert.ToChar() | 转换为字符型(char) |
Convert.ToString() | 转换为字符串型(string) |
Convert.ToDateTime() | 转换为日期型(datetime) |
Convert.ToDouble() | 转换为双精度浮点型(double) |
Conert.ToSingle() | 转换为单精度浮点型(float) |
对于整型和浮点型的强制数据类型操作也可以使用 Convert 方法代替,但是依然会损失存储范围大的数据类型的精度。
string x = "123";
int y=Convert.ToInt32(x);
Console.WriteLine(y);
image.png
网友评论