找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1972|回复: 12

C# 中的类型转换(Convert类)

 火.. [复制链接]
  • 打卡等级:常驻代表
  • 打卡总天数:34
  • 打卡月天数:6
  • 打卡总奖励:9027
  • 最近打卡:2025-12-17 23:15:51

2823

主题

541

回帖

2万

积分

管理员

积分
22569
发表于 2021-5-22 20:35:55 | 显示全部楼层 |阅读模式
Convert类

Convert类常用的类型转换方法:

方法        说明
Convert.ToInt32()        转换为整型(int)
Convert.ToChar()        转换为字符型(char)
Convert.ToString()        转换为字符串型(string)
Convert.ToDateTime()        转换为日期型(datetime)
Convert.ToDouble()        转换为双精度浮点型(double)
Conert.ToSingle()        转换为单精度浮点型(float)
1、类型如果相兼容的两个变量,可以使用自动类型转换或者强制类型装换
2、如果两个变量不兼容,我们则使用Convert的转换工厂进行转换

使用案例:

                                          try
                        {                        
                            intValue = Convert.ToInt32(rule.Value);
                        }
                        catch (Exception e) // 转换int不成功就认为是bool
                        {
                            try
                            {
                                boolValue = Convert.ToBoolean(rule.Value);
                            }
                            catch (Exception ex)
                            {
                                isBool = false;
                            }
                        }

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()进行转换。
————————————————
版权声明:本文为CSDN博主「陈言必行」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Czhenya/article/details/80011765

工控课堂 www.gkket.com

0

主题

113

回帖

333

积分

注册会员

积分
333
发表于 2021-5-22 20:35:56 | 显示全部楼层
看到这帖子真是高兴!
工控课堂 www.gkket.com

0

主题

358

回帖

2277

积分

高级会员

积分
2277
发表于 2021-5-27 02:18:06 | 显示全部楼层
这个类目最活跃了!赞一个!
工控课堂 www.gkket.com

0

主题

119

回帖

293

积分

注册会员

积分
293
发表于 2025-11-17 06:12:08 | 显示全部楼层
内容太顶了!疯狂点赞,已默默收藏~
工控课堂 www.gkket.com

0

主题

110

回帖

167

积分

新手上路

积分
167
发表于 2025-11-17 06:24:15 | 显示全部楼层
说得对!狠狠赞同,没毛病~
工控课堂 www.gkket.com

0

主题

99

回帖

153

积分

新手上路

积分
153
发表于 2025-11-17 06:46:09 | 显示全部楼层
路过打卡,为优质内容疯狂打 call
工控课堂 www.gkket.com

0

主题

99

回帖

151

积分

新手上路

积分
151
发表于 2025-11-17 06:49:24 | 显示全部楼层
理性围观,感觉大家说得都有道理
工控课堂 www.gkket.com

0

主题

87

回帖

116

积分

新手上路

积分
116
发表于 2025-11-17 06:49:47 | 显示全部楼层
同款经历!简直是世另我
工控课堂 www.gkket.com

0

主题

101

回帖

401

积分

注册会员

积分
401
发表于 2025-11-17 06:50:12 | 显示全部楼层
赞同 + 10086,完全说出了我的想法!
工控课堂 www.gkket.com

0

主题

101

回帖

156

积分

新手上路

积分
156
发表于 2025-11-17 06:56:23 | 显示全部楼层
楼主太会说了,字字句句都在理
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 16:26 , Processed in 0.621637 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表