(int),Int32.Parse,Convert.ToInt3…
(int)是一种被称为强制转换的显示转换。源变量和目标变量必须是兼容的(必须都是int类型的)。并且有丢失数据的风险。因为目标变量的类型大小小于源变量。
从int到long、float、double或decimal的预定义隐式转换。例如:
//123是一个整数,它是隐式转换成float类型 float f = 123;
从sbyte、byte、short、ushort或char到int的预定义隐式转换。例如,如果不进行强制转换,下面的赋值语句将会在编译时报错:
long longTest = 22; //错误:无法将类型“long”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?) int i = longTest; int i2 = (int)longTest; //显示转换
但是还要注意,不存在从浮点型到int类型的隐式转换。例如,除非使用显式强制转换,否则以下语句将会在编译时报错:
//错误:无法将类型“double”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?) int z = 3.5; //使强制类型转换,y的值是3,这也是上面所提到(int)强制类型转换有丢失数据的风险 int y = (int)3.5;
Int32.Parse方法仅允许将字符串转换成整型。
Convert.ToInt32(String,IFormatProvider)底层调用了Int32.Parse。然而假如我们传入一个空字符串会返回0.但是如果是传递给Int32.Parse就会抛出
ArgumentNullException异常。
我们可以通过.NET Reflector查看到这个静态的方法。
public static int ToInt32(string value, IFormatProvider provider) { if (value == null) { return 0; } return int.Parse(value, NumberStyles.Integer, provider); } 调用了int.Parse(value, NumberStyles.Integer, provider); 这个方法。
当源变量的值比Int32.MaxValue大或者比Int32.MinValue小,Convert.ToInt32会抛出OverflowExcetion异常。但是使用(int)则不会。
Convert.Toint32将舍入到最接近的32位有符号整数。如果值为中间两个的整体数字则返回偶数;这就是4.5转换为4,而5.5转换为6.而在另一方面
(int)只是截断小数部分。
最后来讲一讲Int32.TryParse。此方法是将字符串转换为等效的32位有符号整数。操作是否成功的返回值。
注意:它是一个bool的方法。
通过.NET Reflector查看。
public static bool TryParse(string s, out int result) { return Number.TryParseInt32(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo, out result); }
如果s转换成功,则为true;否则为false。示例:
string str = "w3"; int i; //输出转换失败 if (Int32.TryParse(str, out i)) { //转换成功 } else { //转换失败 }
上面我们定义的str的值是w3,所以它转换的时候去判断不是32位整数,则返回的是false。
注:TryParse方法类似Parse方法,不同之处在于TryParse方法转换失败时不引发异常。
(int),Int32.Parse,Convert.ToInt3…相关推荐
- (int),Int32.Parse() 和 Convert.toInt32() 的区别
在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 S ...
- 在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别
在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 S ...
- (.Net常识)(int),Int32.Parse,Conver.ToInt32三者在什么情况下使用以及其区别。
三者分别侧重在以下情况下使用: (int) : 适合简单数据类型之间的转换,在对long 类型或是浮点型到int 类型的显式强制转换中使用,但是如果被转换的数值大于 Int32.MaxValue 或小 ...
- C#/.NET整数的三种强制类型转换(int)、Convert.ToInt32()、int.Parse()的区别
1.(int) 适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型). 2. int.Parse(string sParameter) 是个构造函数,参数类型只支持string类 ...
- 有关int,Int32的疑惑解答
疑惑1:int.System.Int32和int32的区别 1. int32是IL中的基元类型(primary type),int和System.Int32是对int32进行了封装. 2. int和S ...
- [网摘]---有关int,Int32的疑惑解答
有关int,Int32的疑惑解答 疑惑1:int.System.Int32和int32的区别 1. int32是IL中的基元类型(primary type),int和System.Int32是对int ...
- .net Int16 、(int Int32)、 Int64 的区别
2019独角兽企业重金招聘Python工程师标准>>> .net Int16 .(int Int32). Int64 的区别 easonjim 2015-09-25 01:41:00 ...
- error C2664: 'LONG CTabCtrl::InsertItem(int,TCITEMW *)' : cannot convert parameter 2 from 'char *' t
刚刚用vs2005写TAB控件时遇到字符集问题 代码如下: [cpp] view plain copy print ? m_tab.InsertItem(0,"进程"); m ...
- C#中(int),int.Parse,int.TryParse,Convert.ToInt32四则之间的用法
今天忽然遇到了 int 转型的问题 同样转int型 结果 用int.Parse() 这种方式转世错的 用Convert.ToInt32的方式转却正确 所以今天特意上网搜了下 在这共享下 有需要的看下吧 ...
最新文章
- java appendchild_详解javascript appendChild()的完整功能
- VS2019配置opencv环境时找不到Microsoft.Cpp.x64.user.props
- java中如何创建子包,父包类可以从java中的子包类访问?
- BootStrap笔记-栅格系统
- 2018年android手机版本统计,安兔兔发布2018年12月Android手机性能排行榜
- linux centos网卡配置,centos网卡配置详解
- 陈广老师 C#语言参考视频打包下载地址
- 吴裕雄 01-mysql管理
- 数字阵列麦克风处理技术概述
- OCCT示例学习笔记1--Viewer2d项目
- RedHat(RHEL)6.2 X64 Oracle11g X64 安装参考文档
- iphone 弹出键盘,文本框自动向上移动。
- 刻在我心底的名字吉他谱-凡凡吉他教室编制
- python获取图片像素点颜色_Python获取图片位置像素色值及判断色值是否存在
- 量子计算机能为我们做什么,为实现量子计算,我们还需要做些什么
- 永久修改DNS域名服务器
- 2023年法定节假日配置Mysql
- C语言调用函数时参数传递实测(好久以前记录的)
- 1.2.2 musl pwn
- icmp协议 主机探测 java 网盘_ping 原理与ICMP协议
热门文章
- 惠普:某些 SSD 驱动的寿命只有32,768 小时(3年多),立即更新!
- spring boot 2.0.3+spring cloud (Finchley)6、配置中心Spring Cloud Config
- Traefik-kubernetes 初试
- C#DataTable2Json(附时间格式化)
- mysql 常用配置
- 关于armhf (hard-float ABI for ARM)
- python 多线程就这么简单(续)
- python 多线程就这么简单
- 一个通用的Makefile模板-转
- CCCC-GPLT L1-033. 出生年 天梯赛