C#中基本类型转换

在编写代码的过程中类型转换是必不可少的,下面介绍C#中的基本类型转换(引用类型的转换更复杂一些,将在后续的文章中介绍)。C#支持两种转换方式:1、隐式转换 2、显示转换。

1、隐式转换

只要能保证值不会发生任何变化,类型转换就可以自动的进行,也就是进行隐式转换。

下面给出C#支持的隐式类型转换:


注意:

1、隐式转换关注符号,有符号数是不能隐式转换成无符号数的;

2、long 和 ulong 是 64 位的,float 是 32 位的,但是他们可以隐式转换成 float ,编译器认为这是一个可以接受的错误;

3、char 类型 可以隐式转换成任意的 正数字类型( byte 类型除外,他们之间必须显示转换),因为字符有对应的 ASCII 码;

4、值类型可以隐式转换成对应的可空类型,如 int 转换成 int?。

下面给出示例:

char a = 'c';
int b = a; // b = 99 ,字符 c 对应的ASCII码值是 99

byte c = 10;
byte d = 11;
// 注意这种情况,c + d 的结果是 int 类型,这里没有进行隐式转换。因为 byte 类型的范围是 0 ~ 255(2^8-1),
//这个范围很小,两个 byte 类型的值得运算很容易溢出,所以两个 byte 类型的值的 加减乘除 运算默认返回 int 类型
int e = c + d;

int f = 5;
int? f1 = f;


可空类型的介绍和使用点击打开链接


2、显示转换

在不支持隐式转换的情况下可以使用类型强制转换符 (类型) 进行显示转换。

注意:

1、显示类型转换可能会丢失数据,导致得不到预期的值;

2、显示类型转换需要谨慎处理,在编译的时候可能会报错,比如 int? a = null , int b = (int)a;

3、布尔类型( bool ) 不支持显示转换;

4、因为值类型是间接继承自 object 类的,所以数字转换成字符串可以直接调用 ToString() 方法;

5、字符串转换成数字不能使用强制转换,可以使用类型预定义的 Parse() 方法。

下面给出示例:

int a = -1;
// 因为 uint 是正整数,所以 -1 转换成 uint 结果不是 -1
uint a1 = (uint)a; // a1= 4294967295

int? b = null;
// 注意:这里在运行的时候会报错,因为 int 类型的值不能为空
int b1 =(int)b;
// 可以这样处理,使用 空合并运算符 ?? 来处理,当 b 不为空时,将 b2 = b,否则 b2 = 0;
int b2 = b ?? 0;
// 也可以使用 三元运算符、不过要注意 三元运算符中 必须要进行显示转换,空合并中不需要
int b3 = b != null ? (int)b:0;

string c = "4";
// Parse()方法只支持字符串 
int c1 = int.Parse(c);
string c2 = c1.ToString();

C#中运算符的介绍和使用
点击打开链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值