将字符串转换为整数

有多种方法可用于将 string 显式转换为 integer,例如:

  1. Convert.ToInt16();

  2. Convert.ToInt32();

  3. Convert.ToInt64();

  4. int.Parse();

但是如果输入字符串包含非数字字符,则所有这些方法都将抛出 FormatException。为此,我们需要编写一个额外的异常处理(try..catch)来处理这种情况。

示例说明:

那么,让我们的输入是:

string inputString = "10.2";

例 1: Convert.ToInt32()

int convertedInt = Convert.ToInt32(inputString); // Failed to Convert 
// Throws an Exception "Input string was not in a correct format."

注意: 其他提到的方法也是如此 - Convert.ToInt16();Convert.ToInt64();

例 2: int.Parse()

int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.

我们如何规避这个?

如前所述,为了处理异常,我们通常需要一个 try..catch,如下所示:

try
{
    string inputString = "10.2";
    int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
    //Display some message, that the conversion has failed.         
}

但是,在任何地方使用 try..catch 都不是一个好习惯,如果输入错误,我们可能会在某些情况下给出 0 *(如果我们按照上面的方法,我们需要从 catch 块中分配 0convertedInt)。*为了处理这种情况,我们可以使用一种名为 .TryParse() 的特殊方法。

.TryParse() 方法具有内部异常处理,它将为 out 参数提供输出,并返回指示转换状态的布尔值 (如果转换成功则返回 *true;如果失败则返回 false)。*根据返回值,我们可以确定转换状态。让我们看一个例子:

用法 1: 将返回值存储在布尔变量中

 int convertedInt; // Be the required integer
 bool isSuccessConversion = int.TryParse(inputString, out convertedInt);

我们可以在执行后检查变量 isSuccessConversion 来检查转换状态。如果它是假的话,那么 convertedInt 的值将是 0 (如果你想要 0 用于转换失败,则无需检查返回值)。

用法 2:if 检查返回值

if (int.TryParse(inputString, out convertedInt))
{
    // convertedInt will have the converted value
    // Proceed with that
}
else 
{
 // Display an error message
}

用法 3: 不检查返回值你可以使用以下,如果你不关心返回值 (转换与否,0 就可以了)

int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted