C#:我什么时候应该使用TryParse?

zxc*_*bnm 14 c# exception-handling exception

我知道它不会抛出异常,因为它可能会快得多,但是,你最有可能使用它将输入转换为你可以使用的数据,所以我不认为它经常被用来制作在性能方面有很大差异.

无论如何,我看到的示例都是if/else块的行TryParse,else返回错误消息.对我来说,这与使用try/catch块并返回错误消息的catch基本相同.

那么,我错过了什么吗?是否存在实际有用的情况?

Mar*_*ers 23

除了你自己提到的性能方面,还有一个语义差异:

使用try/catch是出于特殊情况.输入无效数据是您期望的,而不是特殊的.

  • 提及异常与验证的+1.我的一个小小的烦恼! (5认同)

Gre*_*ech 12

它就像这样简单:Parse如果您在遇到无效数据时想要例外,请使用; TryParse如果你不这样做,请使用.因此,你的问题似乎是:

如果数据无效,为什么不想要例外?

例外情况仅应用于例外情况,而无效的数​​据可能不是例外情况.也许你正在编写一个数据清理程序,它希望获得无效数据,并试图在数据无效时推断出合理的值.也许数据并不那么重要,你可以跳过包含它的记录.

它取决于上下文,并且可以选择ParseTryParse方法让您为自己选择适当的解析机制.


Ode*_*ded 7

在可能的情况下,使用TryParse- 使用它比抛出异常要便宜得多.