C#: TryParse和Convert的区别

3
今天我读了一篇文章,文章中写道我们应该始终使用TryParse(string, out MMM)进行转换,而不是Convert.ToMMM()
我同意这篇文章,但之后我遇到了一个场景。
当字符串始终有一些有效值时,因此我们也可以使用Convert.ToMMM(),因为我们不会从Convert.ToMMM()得到任何异常。
我想在这里知道的是:当我们使用TryParse时是否会有性能影响?因为当我知道输出参数始终是有效的时,我们可以使用Convert.ToMMM()而不是TryParse(string, out MMM)
你怎么看?
3个回答

9
如果你知道可以转换数值类型,直接使用Parse()。如果你“知道”它可以被转换,但实际上不能被转换,那么抛出异常是一件好事。
编辑提示:请注意,这与在不进行错误检查的情况下使用TryParseConvert进行比较。如果您使用任何其他方法进行适当的错误检查,则此观点无关紧要。我只是担心你认为你“知道”该值可以转换。如果您想跳过错误检查,请使用 Parse,失败后立即停止程序而不是可能继续并损坏数据。

1

当输入到TryParse/Convert.ToXXX的数据来自用户输入时,我会始终使用TryParse。对于数据库值,我会检查为什么从数据库获取string(也许是糟糕的设计?)。如果可以在数据库列中输入字符串值,我还会使用TryParse,因为您永远无法确定没有人手动修改数据。

编辑
阅读Matthew的回复:如果您不确定并且无论如何都会将转换包装在try-catch块中,那么考虑使用TryParse,因为据说在这种情况下它要比进行try-catch快得多。


0

你所使用的开发方法会有显著的差异。

转换:使用多种选项将一个“原始”数据转换为另一种类型和相应格式。
例如,将整数转换为其位表示法或十六进制数字(作为字符串)转换为整数等。
错误消息:针对多种情况和转换过程的多个阶段的特定转换错误消息。

TryParse:无错误地从一种数据格式转换为另一种。使可能性的真/假控制成为可能。
错误消息:
NB:即使在将数据传递到变量之后,传递的数据仍然是我们尝试解析的类型的默认值。

Parse:实质上是将某些以一种格式呈现的数据转换为另一种格式。没有任何表示和花哨的东西。
错误消息:面向格式。

P.S. 如果我漏掉了什么或者没有解释清楚,请纠正我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接