c#强制转换Convert和Parse的相关内容

一、背景

  通常格式转换时直接使用Parse功能,但这只能转换String类型的数据,后来搜集资料发现c#中还有Convert方法,我对这两者产生了兴趣,接下来便对这两个进行简单的介绍。
  首先我对这两个的感受有点像买手机,一个是正常版本的手机,一个是手机版本+Pro,当然Parse是正常版本的,Convert更像是Pro类型的。两者功能及其相似,但是总体使用来看Convert似乎比Parse更加适用于各种场景,但是两者之间的区别也让某些场景中更适合用Parse(就像我买手机没钱,那就买正常版本的手机,虽然性能垃圾了点,但是适合我)

二、Convert与Parse的一些区分

Convert常用功能如下所示:

Convert.ToBoolean(obj)// obj转换为bool
Convert.ToByte(obj)// obj转换为byte
Convert.ToChar(obj)// obj转换为char
Convert.ToDecimal(obj)// obj转换为decimal
Convert.ToDouble(obj)// obj转换为double
Convert.ToInt16(obj)// obj转换为short
Convert.ToInt32(obj)// obj转换为int
Convert.ToInt64(obj)// obj转换为long
Convert.ToSByte(obj)// var转换为sbyte
Convert.ToSingle(obj)// obj转换为float
Convert.ToString(obj)// obj转换为string
Convert.ToUInt16(obj)// obj转换为ushort
Convert.ToUInt32(obj)// obj转换为uint
Convert.ToUInt64(obj)// obj转换为ulong

2.1、转换String的区别

  • ToString()
      使用最多的是ToString()方法,使用这个方法最重要的就是对目标object进行null的判断或者异常处理,有时在编写代码时忘记判断运行时会出现NullReferenceException的异常报错。
  • Convert.ToString(obj)
      有时我们只是对某一值进行赋值或者想将判断条件写在同一处,那么可以使用此方法。例如上面的null在这里进行转换后还是null""转换后还是"",这样就不容易产生空值异常。

2.2、转换int的注意点

  • 对null的处理
      使用int.Parse(null)会报NullReferenceException异常,而Convert.ToInt32(null)不会产生异常,他是将null转换为0,平常使用的时候如果对0需要注意的还是慎用Convert的转换方法。
  • 想将小数点转为int
      Convert.ToInt32(double)对xx.5这个格式的小数有特殊的需求,他是取相邻两个整数中偶数的情况,其余情况会四舍五入。如:
Convert.ToInt32(12.5);// 12
Convert.ToInt32(11.5);// 12
Convert.ToInt32(12.6);// 13
Convert.ToInt32(11.1);// 11

  注意使用int.Parse(str)时,其中str必须是整数类型,否则直接报System.FormatException格式错误。

int.Parse("123");//123
int.Parse("12.3");//格式错误

  当然也有人喜欢用(int)12.3的格式转换,这是可以转换的,但是他不是四舍五入,而是截取整数部分。

三、总结

  这两个使用体验及其相似却又有不同,总体而言Parse必须里面跟的是String,Convert可以包含各种类型,此外就像是正常手机和Pro手机,虽然Pro手机很好,但也不适用于所有情况,具体细节可以自己慢慢品味。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值