类型转换

关于类型转换

一.隐式转换

什么是类型转换?
就是不同变量类型之间的相互转换

隐式转换的基本规则→不同类型之间自动切换

(大范围装小范围)(核心)

1.相同大类型之间的转换

1
2
3
4
5
6
7
long l=1;
int i=1;
short s=1;
l=i;
//隐士转换,int隐式转换成long
i=l;
//会报错,不能用小范围的类型去装在大范围的类型。

2.不同大类型之间的转换

无符号和有符号之间

1
2
3
4
5
6
7
byte b2=1;
sbyte b1=1;
int b3=1;
b2=b1;
//无符号不能装有符号,有符号的变量是不能够隐式转换成无符号的。
b3=b2;
//有符号装无符号,前提:有符号的变量不管是多少,都能包裹无符号变量。

浮点数装整数

1
2
3
4
5
6
float f2=1.1f;
long i1=1;
ulong i2=1;
f2=i1;
f2=i2;
//浮点数是可以装载任何类型的整数。

特殊情况

char类型可以隐式转换成整型和浮点型、

char类型隐式转换成数值类型,其对应的数字其实是一个ASCII码。

string类型无法和其他类型进行隐式转换

总结!!!!

有符号:long→int→short→sbyte

无符号:ulong→uint→ushort→byte

浮点数:double→float

decimal这个类型没有办法用隐式转换的形式去存储double和float

double→float→整数(无符号,有符号)→char

decimal→整数(无符号,有符号)→char

string和bool不参与隐式转换

二.显示转换

1.括号强转

作用:一般情况下,将高精度的类型强制转换为低精度。

语法:变量类型 变量名 =(变量类型)变量;

注意: 精度问题 范围问题

1
2
3
4
5
6
7
8
9
10
11
12
13
sbyte b1=1;
short b2=1;
int i=1;
long ;=1;
char c='A';
s=i;
//会报错,因为小范围不能装大范围
s=(short)i;
//不会报错,因为将i原本的int类型进行了括号强转,变成了short类型,再赋值给s。
c=i2;
//报错,字符可以隐式转换为整数(ASCII码),反之不成立。
c=(char)i2;
//不报错,最终结果是将i2的ASCII码转换为字符输出,在赋值给c。

Ps括号强转可能会出现范围问题造成的异常

浮点数类型影响的就是精度问题

bool,string 不能够通过括号强转

2.Parse法

作用:把字符串转换为对应的类型(只限于字符串!!!)

语法:变量类型.Parse(“字符串”)

注意:字符串必须能够转换成对应类型,并且要考虑范围,否则报错。

1
2
3
4
5
6
string str2="123";
int i4=int.Parse(str2);
//结果是123。之间把123当成数值赋值给i4.
string str3="123.45";
i4=int.Parse(str3);
//程序报错。表示字符串str3无法转换成int类型,之后报错.

Ps:同样不能转换bool类型

3.Convert法

作用:更准确的将各个类型之间进行相互转换。(精度更高)

语法:Convert.To 目标类型(变量或者常量)

注意:填写的变量或者常量必须正确,否则出错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int a=Conver.ToInt32("12");
//将字符串转换成为int32为的形式,最后赋值给a,a显示12。
int a=Convert.ToInt32(1.66);
//与括号强转不同的是,它会进行四舍五入。a显示2.(括号强转a会显示1)
int a=Convert.ToInt32(true);
//对bool类型也可以进行强转转换,输出1。
short a=Convert.ToInt16(1.66);
//不存在short类型,改为了Int16,要注意。
ushort a=Convert.ToUInt16(1.66);
//不存在ushort类型,改为了UInt16,要注意。
long a=Convert.ToInt64(1.66);
//不存在long类型,改为了Int64,要注意。
float f=Convert.ToSingle("13.2");
//不存在float类型,改为ToSingle。
//double 和 decimal 倒是没有改变。
bool bo=Convert.ToBoolean("true");
int i=Convert.ToString(123);
//这个的功能就和下面的tostring一样了,不过多赘述。

4.其他类型转string

作用:拼接打印

语法:变量.toString();

1
2
3
4
5
string str6=1.Tostring();
string str5=1.2f.Tostring();
//当我们进行字符串拼接时,就会自动调用tostring函数进行拼接。
Console.WriteLine("123123"+1+true);
//自动运用toString函数进行拼接,之后组合到一起,打印出1231231true。

Ps:当我们在 Console.readLine()时,系统其实会自动把你输入的变量转换成string字符串格式存储起来。


类型转换
https://gaster44.github.io/2023/10/21/类型转换/
作者
huangjinhong
发布于
2023年10月21日
许可协议