处理和转换中哪一个更快int.Parse(),int.TryParse(),Convert.Int32()

Sha*_*pta 5 .net c#

哪一个更快,更强大,更可靠.为什么?

int.Parse()
int.TryParse()
Convert.ToInt32()
Run Code Online (Sandbox Code Playgroud)

Jax*_*ian 9

阅读此内容("性能分析Parse与TryParse与ConvertTo"的比较)以获取更多信息.

如果您不确定该字符串是否可解析,那么int.TryParse()将比其他任何一个更快并捕获异常.


Jus*_*ner 5

Convert.Int32()调用Int32.Parse()额外的null检查,所以Int32.Parse()可能会更快一点.这就是为什么Convert.Int32()会更快(它Int32.Parse()必须处理它之前捕获null ).

Int32.Parse()Number.ParseInt32()内部调用,当无法解析数字时抛出异常.

Int32.TryParse()Number.TryParseInt32()内部调用具有类似代码,Number.ParseInt32()但不是抛出异常,而是简单地返回false ...这会减少开销.

考虑到所有这些变量,我的猜测是,Int32.TryParse()它将为您提供非空值的最快结果.如果大多数调用都有可能包含空值,我会说Convert.Int32()会表现得更好.

......所有这些都是通过.NET Reflector的强大功能带给您的.