`
- 浏览:
143859 次
- 性别:
- 来自:
江门
-
(int) Int32.Parse() Convert.toInt32() (转)
在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别?
int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 System.Int32。
(int)表示使用显式强制转换,是一种类型转换。当我们从 int 类型到 long、float、double 或decimal 类型,可以使用隐式转换,但是当我们从 long 类型到 int 类型转换就需要使用显式强制转换,否则会产生编译错误。
Int32.Parse()表示将数字的字符串转换为32 位有符号整数,属于内容转换[1]。
我们一种常见的方法:public static int Parse(string)。
如果 string 为空,则抛出 ArgumentNullException 异常;
如果 string 格式不正确,则抛出 FormatException 异常;
如果 string 的值小于 MinValue 或大于 MaxValue 的数字,则抛出 OverflowException 异常。
Convert.ToInt32() 则可以将多种类型(包括 object 引用类型)的值转换为 int 类型,因为它有许多重载版本[2]:
public static int ToInt32(object);
public static int ToInt32(bool);
public static int ToInt32(byte);
public static int ToInt32(char);
public static int ToInt32(decimal);
public static int ToInt32(double);
public static int ToInt32(short);
public static int ToInt32(long);
public static int ToInt32(sbyte);
public static int ToInt32(string);
......
(int)和Int32.Parse(),Convert.ToInt32()三者的应用举几个例子:
例子一:
long longType = 100;
int intType = longType; // 错误,需要使用显式强制转换
int intType = (int)longType; //正确,使用了显式强制转换
例子二:
string stringType = "12345";
int intType = (int)stringType; //错误,string 类型不能直接转换为 int 类型
int intType = Int32.Parse(stringType); //正确
例子三:
long longType = 100;
string stringType = "12345";
object objectType = "54321";
int intType = Convert.ToInt32(longType); //正确
int intType = Convert.ToInt32(stringType); //正确
int intType = Convert.ToInt32(objectType); //正确
例子四[1]:
double doubleType = Int32.MaxValue + 1.011;
int intType = (int)doubleType; //虽然运行正确,但是得出错误结果
int intType = Convert.ToInt32(doubleType) //抛出 OverflowException 异常
(int)和Int32.Parse(),Convert.ToInt32()三者的区别:
第一个在对long 类型或是浮点型到int 类型的显式强制转换中使用,但是如果被转换的数值大于 Int32.MaxValue 或小于 Int32.MinValue,那么则会得到一个错误的结果。
第二个在符合数字格式的 string 到 int 类型转换过程中使用,并可以对错误的 string 数字格式的抛出相应的异常。
第三个则可以将多种类型的值转换为 int 类型,也可以对错误的数值抛出相应的异常。
无论进行什么类型的数值转换,数值的精度问题都是我们必须考虑的[1]。
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Convert.ToInt32、(int)和int.Parse三者的区别:
前者适合将object类类型转换成int类型,如Convert.ToInt32(session["shuzi"]);
(int)适合简单数据类型之间的转换;
int.Parse适合将string类类型转换成int类型,如int.Parse(session["shuzi"].ToString())。
(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).
(4)至于效率上的区别可以看看这遍文章:《细说Convert和Parse到底那个效率高》
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本文将详细探讨Convert.ToInt32和Int32.Parse这两种常用方法的区别,以及Int32.TryParse的特殊用法,分析它们的性能和适用场景,帮助开发者更好地选择适合的方法。 首先,Convert.ToInt32和Int32.Parse都可以将字符...
在C#编程语言中,将不同的数据类型转换为整型(int)时,有四种主要的方法:`(int)` 强制类型转换、`int.Parse()`、`int.TryParse()` 和 `Convert.ToInt32()`。每种方法都有其特定的用法和处理异常的方式,下面将...
在C#编程语言中,`Convert.ToInt32()` 和 `int.Parse()` 都是用来将不同数据类型转换为整型(int)的方法,但它们之间存在一些关键的区别和应用场景的差异。 首先,`Convert.ToInt32()` 是一个静态方法,定义在 `...
Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:Convert.ToInt32 参数为 null 时,返回 0;int.Parse 参数为 null 时,抛出异常。Convert.ToInt32 参数为 “” 时,抛出异常...
最后,Convert.ToInt32 方法可以将 object 类型转换为 int 类型,但是需要注意,如果变量的值为 null 时,会传回 0,不会抛出异常。 C# 中 int、Convert、Parse、TryParse 的区别对比如下: * int 类型转换:可以...
在 C# 中,强制类型转换是通过使用关键字 `(int)` 实现的,而不是使用 `Int32.Parse()` 或 `Convert.ToInt32()`。 在 C# 中,`int` 是一个关键字,表示 32 位有符号整数,它对应于 .NET Framework 中的 `System.Int...
在 C# 中,有多种方式来实现这一功能,包括 `Int32.Parse()`、`Int32.TryParse()` 和 `Convert.ToInt32()`。 **方法1:使用 `Int32.Parse()`** 此方法直接将字符串转换为整数,如果字符串不能被解析为整数,则会抛...
本文将详细解析四种主要的转换方法:强制类型转换(int),int.Parse,int.TryParse,以及Convert.ToInt32,并讨论它们之间的差异和适用场景。 1. **强制类型转换(int)** `(int)变量名` 是一种显式类型转换,通常...
x1 =(-b + System.Math.Sqrt(Convert.ToDouble (b * b - 4 * a * c))) /(2 * a); x2 =(-b -System.Math.Sqrt(Convert.ToDouble(b * b - 4 * a * c))) /(2 * a); textBox4.Text =x1.ToString(); textBox5.Text= ...
// 或者:int colorValue = Convert.ToInt32(myColor.ToString("D")); ``` 2. 将int转换为枚举: 将整数值转换回枚举需要使用枚举类型的名称,后面跟着`.`和括号内的整数值。如果整数值在枚举的范围内,转换是...
在进行这种转换时,有三种常见的方法:`Convert.ToInt32`、`(int)`(类型转换运算符)和`int.Parse`。这三者虽然都能完成基本的类型转换,但它们在处理方式、适用场景以及异常处理上存在显著的区别。 首先,`...
使用 `DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString()` 可以获取本周的第一天的日期,使用 `DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.To...
在C#编程语言中,`ToInt32`是System.Convert类的一个静态方法,它用于将各种数据类型转换为32位有符号整数。在这个程序Demo中,我们将深入探讨`ToInt32`函数的用法,以及与之相关的其他转换函数。通过VS2019(Visual...
可以使用`Convert.ToInt32()`或`int.Parse()`函数将十六进制字符串转换为十进制整数: ```csharp string hexStr = "FF"; int decNum = Convert.ToInt32(hexStr, 16); // 255 // 或者 int decNum = int.Parse(hexStr...
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7); ``` - 获取上周的最后一天: ```csharp DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime...
DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString(); // 上周一的日期 DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now....