【c#】类型转换:Convert与Parse的区别与比较

目录

 

在进行c#的类型转换时:

比较部分:

额外1:TryParse(a,b)方法

额外2:点击此处前往详细的异常处理


在进行c#的类型转换时:

当两个类型可以兼容:c#可以做到自动类型转化隐形转换,如把int变量赋值给double】或者强制类型转换显性转换,如由double赋值给int,可以用int=(int)double方法,但是会造成数据丢失

当两个类型不能兼容:比如int和string,c#就需要用转换类型的方法来进行转换,目前据我所知系统提供的两种方法为:【Convert】【Parse】

注:理论上任何要转到字符串类型的变量都可以用toString方法?

 

比较部分:

基本以涉及double类型和int类型为基础,参照

1、对于参数为null的时候:

Convert.ToDouble()参数为 null 时,返回 0.0; 类似的,其他的转换也会返回0值。
Double.Parse() 参数为 null 时,抛出异常。 

细微区别的实际应用:

假如从 url 中取一个参数 page 的值,我们知道这个值是一个 int

所以即可以用 Convert.ToInt32(Request.QueryString["page"]),也可以用 int.Parse(Request.QueryString["page"])

但是如果 page 这个参数在 url 中不存在,那么前者将返回 0,0 可能是一个有效的值,所以你不知道 url 中原来根本就没有这个参数而继续进行下一下的处理,这就可能产生意想不到的效果,而用后一种办法的话没有 page 这个参数会抛出异常,我们可以捕获异常【见额外2】然后再做相应的处理,比如提示用户缺少参数,而不是把参数值当做 0 来处理

2、对于参数为""的情况

Convert.ToDouble参数为 "" 时,抛出异常; 
Double.Parse 参数为 "" 时,抛出异常。 

3、四舍五入的情况下:

  •  a. Convert.ToInt32(double value) 如果 value 为两个整数正中间的数字,则返回二者中的偶数;即 3.5 转换为 4,4.5 转换为 4,而 5.5 转换为 6。不过 4.6 可以转换为 5,4.4 转换为 4 。
  •  b. int.Parse("4.5") 直接报错:"输入字符串的格式不正确"
  •  c. int(4.6) = 4 Int 转化其他数值类型为 Int 时没有四舍五入,强制转换。

4、其他情况下:

convert的方法的可转换的类型往往比parse的多一点,在使用parse方法时也许出现异常,而convert则会成功转换,比如涉及到null.

换而言之,parse相比convert“更为死板”.

 

额外1:TryParse(a,b)方法

方法int.TryParse(string s【或者变量名】,out int i【或者是之前声明的变量名】)

Double.TryParse 与 Double.Parse 又较为类似,更为安全,但它不会产生异常,转换成功返回 true,转换失败返回 false。

前一个参数是你要转换的变量,后者参数则是转换成功后赋值给的变量。

同理,double等其他数据类型也存在这个方法

 

额外2:点击此处前往详细的异常处理

如果使用parse时产生了异常:

常见异常说明:

如果字符串为空,则抛出ArgumentNullException异常; 
如果字符串内容不是数字,则抛出FormatException异常; 
如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;

如果想要程序正常运行,而不是遇到异常直接报错/闪退/卡住……(另外除以0等算法错误也可以通过异常处理来解决)

我们可以用try/catch方法进行异常处理

try
{
   // 引起异常的语句
    //尝试执行的语句
}
catch( ExceptionName e1 )
{
   // 错误处理代码
    //Console.WriteLine("例如这里出错了给你一个提示信息");
}

这样程序可以正常的往后运行,遇到异常则会执行catch内的处理语句,而非直接报错

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值