黑马程序员技术交流社区

标题: int.TryParse的实用性 [打印本页]

作者: 神马王刚    时间: 2012-10-7 00:03
标题: int.TryParse的实用性
本帖最后由 神马王刚 于 2012-10-7 15:40 编辑

将字符串转换为整型,我们常用的有3个方法,分别是Convert.ToInt32();int.Parse()和int.TryParse();
  1.             Console.WriteLine("请输入一个数");
  2.             int num1 = Convert.ToInt32(Console.ReadLine());
  3.             Console.WriteLine("请输入一个数");
  4.             int num2 = int.Parse(Console.ReadLine());
  5.             Console.WriteLine("请输入一个数");
  6.             int num3 = 0;
  7.             bool result = int.TryParse(Console.ReadLine(), out num3);
  8.             Console.ReadKey();
复制代码
int.Parse()和convert.toint32就没区别,对等,喜欢那个用哪个,而用tryParse的话,代码不仅多一行,而且转换成功与否有提示,可是转化失败的话,也就提示不成功,也没有错误提示并要求重输.若输入的不能转换,我们需要的功能是提示错误并要求重输,那这是3个都在一个起跑线上了,除非一定非要得到true或false的话.按照我们的思维和习惯,能转换就给出转换后的结果,不能转换就提示错误要求重输,用户体验才会比较好.因此,我觉得int.TryParse的实用性实在不高,使用频率也低,只能说为我们思维的拓展提供了一种可能.不知道大家怎么看待int.TryParse的定位?这个转换你们用的多么?

作者: 管海鹏    时间: 2012-10-7 00:10

1、(int)是一种类型转换;当我们从int类型到long,float,double,decimal类型,可以使用隐式转换,但是当
我们从long类型到int类型就需要使用显式转换,否则会产生编译错误。
2、int.Parse()是一种类容转换;表示将数字内容的字符串转为int类型。
如果字符串为空,则抛出ArgumentNullException异常;
如果字符串内容不是数字,则抛出FormatException异常;
如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;
3、int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0
4、Convert.ToInt32()是一种类容转换;但它不限于将字符串转为int类型,还可以是其它类型的参数;
比较:
Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。

Convert.ToInt32 参数为 "" 时,抛出异常;
int.Parse 参数为 "" 时,抛出异常。

Convert.ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
作者: 陈顺亮    时间: 2012-10-7 00:14
TryParse();还是有一定的好处的 ,很多时候咱们还是通过if语句进行判断的,这样的话TryParse();返回的bool值用处就体现出来了
作者: 秦敖    时间: 2012-10-7 00:37
int Number;
while(!int.TryParse(Console.ReadLine(),out Number)||Number<1||Number>100)
{
    Console.Write("输入无效,重新输入(1-100):");
}
这样即实现了为数值有效性的控制,也实现了数据范围有效性的控制
作者: 李佳儒    时间: 2016-2-29 22:25
{:2_32:}{:2_31:}{:2_30:}{:2_34:}{:2_33:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2