int.parse()函数是将字符串类型转换成int类型。
使用int.parse()不当,可能会抛出异常,分为以下三种:
- System.ArgumentNullException,即被转换的字符串的内容为Null;
- System.FormatException,字符串的内容不是数字;
- System.OverflowException,字符串在转换后不在int类型的可表示范围内,造成溢出。
所以使用int.parse()来进行转换是很容易受到限制的,一般如果能确定被转换字符串的内容,只是进行简单地转换时,可以使用这种方法。如果输入字符串不定,或者先要对其进行判断时,可采用其他的转换方法,下面来介绍几种把string转换为int的其他函数:
1.int.TryParse
int.TryParse与 int.Parse是比较类似的,但是它不会因被转换内容不合法而产生异常,转换成功返回true,转换失败返回false,最后一个参数为输出值,若转换失败,输出值为0.若成功,则返回转换后的int值。
2.Convert.ToInt32()
首先,Convert.ToInt32(),可以转换的类型比较多,可以将object类类型转换为int类型,而int.Parse若转换数字以外的类型就会报错。使用此函数时,若被转换内容为null时,返回0;若为“”,就会抛出异常;此方法与int.Parse也是较为类似的,实际上Convert.ToInt32() 内部调用了 int.Parse。
还需要注意一些小的细节,当参数为两个相邻整数中间的数字时,返回二者中的偶数,若不是中间数,则采取四舍五入的方法。若int.Parse的参数为小数,则会报错:输入的字符串格式不正确。若用下面讲到的(int)方法,没有四舍五入,会进行强制转换。
3.(int)
(int)用于简单的类型转换,形式为(int)变量,C#默认类型为int32,不支持bool转化。是一种显式的强制转换,当我们从int类型到long、flout、double、decimal类型,可使用隐式转换,但当从long类型到int类型转换时,由于long类型范围大,所以要进行显式的强制转换,否则会产生编译错误。