永发信息网

C# 中 Convert 与 Parse 区别

答案:7  悬赏:30  手机版
解决时间 2021-03-20 16:22
C# 中 Convert 与 Parse 区别
最佳答案
1)对于转换对象,Convert.ToInt32()可以为多种类型(例出数字类型外bool,DateTime等),int.TryParse()和int.Parse()只能是整型字符串类型(即各种整型ToString()之后的形式,不能为浮点型,否则int.Parse()就会出现输入的字符串格式不正确的错误,int.TryParse()也会返回false,输出参数为0),(int)只能是数字类型(例float,int,uint等);
2)对于空值NULL,从运行报错的角度讲,(int)强制转换和int.Parse()都不能接受NULL;Convert.ToInt32()其实是在转换前先做了一个判断,参数如果为NULL,则直接返回0,否则就调用int.Parse()进行转换,int.TryParse()其实是对int.Parse()做了一个异常处理,如果出现异常则返回false,并且将输出参数返回0;
3)针对于浮点型的取舍问题,浮点型只有Convert.ToInt32()和(int)能进行转换,但是也是进行取舍了的,Convert.ToInt32()采取的取舍是进行四舍五入,而(int)则是截取浮点型的整数部分,忽略小数部分,例如Convert.ToInt32(1.499d)和(int)1.499d都返回1,Convert.ToInt32(1.5d)返回2,而(int)1.5d还是返回1;
4)关于溢出,将大的数据类型转换为小的数据类型时Convert.ToInt32()和int.Parse()都会报溢出错误,值对于Int32太大或太小,而(int)不报错,但是返回值为-1。
如此可见,我们在进行数据转换前选择转换方法要谨慎,如果是数字类型可以考虑直接用(int)强制转换,如果是整型字符串类型的,考虑用int.Parse()进行转换,如果不是这两种类型,再考虑用Convert.ToInt32()进行转换。
全部回答
Convert: Class/Object;

Parse: Method, Double.Parse("12.3456");
Convert.ToInt32()与int.Parse()的区别(1)这两个方法的最大不同是它们对null值的处理方法:
Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。

没搞清楚Convert.ToInt32和int.Parse()的细细微区别时千万别乱用,否则可能会产生无法预料的结果,举例来说:假如从url中取一个参数page的值,我们知道这个值是一个int,所以即可以用 Convert.ToInt32(Request.QueryString["page"]),也可以用,int.Parse(Request.QueryString["page"]),但是如果page这个参数在url中不存在,那么前者将返回0,0 可能是一个有效的值,所以你不知道url中原来根本就没有这个参数而继续进行下一下的处理,这就可能产生意想不到的效果,而用后一种办法的话没有page 这个参数会抛出异常,我们可以捕获异常然后再做相应的处理,比如提示用户缺少参数,而不是把参数值当做0来处理。

(2)还有一点区别就是
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时没有四舍五入,强制转换

int.Parse是转换String为int
Convert.ToInt32是转换继承自Object的对象为int的.
你得到一个object对象,你想把它转换为int,用int.Parse就不可以,要用Convert.ToInt32.

个人总结:
(1)Convert.ToInt32的参数比较多,Int.Parse只能转换string类型的.
(2)Parse就是把String转换成int,char,double....等,也就是*.Parse(string) 括号中的一定要是string.
(3)Convert可以提供多种类型的转换,也就是Convert.*()括号中可以为很多种类型(包括string).
言简意赅的说

Convert 更强大

Parse 更快

性能上 当然后者更快,但是对参数的要求有局限性
Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:
Convert.ToInt32 参数为 null 时,返回 0; int.Parse 参数为 null 时,抛出异常。
Convert.ToInt32 参数为 "" 时,抛出异常; int.Parse 参数为 "" 时,抛出异常。
Convert.ToInt32 可以转换的类型较多; int.Parse 只能转换数字类型的字符串。
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。
COnvert 和parse 差不多 但是 convert 比parse 全些 有些parse转换不了的可以用Convert 转换,
string s = "12";
int j = (int)s;
int i = Convert.ToInt32(s);
试试这个,Parse和 j 那个差不多。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
征途100战马怎么做?
驻厂管理员是厂里正式管理吗
路桥钢泓不锈钢有限公司(东门)地址在什么地方
怎么在社会上出人头地
桃花源记手游每天必做的任务都有哪些啊
衣服褪色对皮肤有伤害吗
电动机18.5kw4级和22kw4级轴头直径是一样的吗
《干法》读后感
听说三年以后烧油的车不让跑了,真的假的?
请问大神可以告诉下为什么都在使用约单呢,急
上坡辅助是什么意思
针对于,腾讯课堂,网易课堂,百度传课,网易
达州市环境监察支队在哪里啊,我有事要去这个
要从6位男生3位女生中选一位男生以为女生参加
凤凰(金鸡)飞到我家里来了,象征什么啊?
推荐资讯
谁能告诉我如何破开江西电信宽带的一条网线只
老锐志的大灯怎么来调
途观最新行情 途观1.8T怎么样 途观深度评测
世界上有没有鬼有没有佛,那些佛上身是不是真
如何挽回男友,他还会给我机会吗?求助升魅情
给狗打针会死吗
客厅摆放风水
sap 项目收入 需要月结吗
本科毕业后改过名字,考研网报无法通过学历认
主播任务里面有个设置粉丝昵称,在哪里设置
为什么文物中很少黄金
单选题蝇、蚊子的后翅退化成平衡棒,可在飞行
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?