如何将字符串转换为整数并确定它是否小于Int32.MinValue或大于Int32.MaxValue?

The*_*att 0 .net c# .net-4.0

我有以下代码试图确定给定的字符串是否是一个有效的整数.如果它是一个整数,但不在Int32的有效范围内,我需要特别知道它是否大于Int32.MaxValue或小于Int32.MinValue.

try
{
     return System.Convert.ToInt32(input);
}
catch (OverflowException)
{
     return null;
}
catch (FormatException)
{
     return null;
}
Run Code Online (Sandbox Code Playgroud)

Convert.ToInt32将抛出OverflowException,如果它不在可接受的值范围内,但它会为大于和小于两者抛出相同的异常.有没有办法确定哪一个除了解析异常的文本?

Jon*_*eet 9

当你正在使用.NET 4,你可以使用BigInteger-解析到,然后将结果与比较BigInteger的表示int.MaxValueint.MinValue.

但是,我建议您使用TryParse而不是捕获异常并将其用于流控制.