.net研究之数据转换

1.隐式转换
  例如:
  int i = 10;
  float f = i;

2.显式转换
  在转换时,在数据的左边要加上要转换的类型名称
  例如:
  float f = 10.4f;
  int i = (float)f;

3.装箱/拆箱
装箱就是将值类型转换成引用类型
拆箱则是引用转换成值类型

在将值类型装箱成引用类型后
拆箱时,拆箱后的类型必须与装箱时的类型一致
装箱是隐式转换
拆箱是显式转换
例如:
decimal d = 10.8m;
object o = d;
int i = (int)d; //error
decimal d1 = (decimal)d //ok
但是如果想直接把o转换为int类型
可以使用Convert.ToInt32(o),因为此方法会先将o转换成int类型,然后再赋值给int类型

注意:在使用装箱将值类型转换成多个引用类型时,被转换的引用类型可能不相等。
示例:
int i = 10;
object o1 = i;
object o2 = i;

//因为o1和o2指向不同的对象实例(引用地址不同),当==用于比较引用类型时,是对引用地址进行比较,
//所以即使值相等,在比较时也被视为不相等
if (o1 == o2)//false
{
    MessageBox.Show("");
}
只有拆箱后进行比较,才会相等
if ((int)o1 == (int)o2)//true
{
    MessageBox.Show("");
}

4.as
  1.显式转换在转换失败时会抛出异常
    as在转换失败时会为对象设置null
  2.as只能用于引用转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值