サーチ…


文字列を整数に変換する

明示的にstringinteger変換するには、 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入力が間違っている場合、 我々は上記の方法に従った場合は(我々が割り当てる必要が0までconvertedIntからキャッチブロック)。このようなシナリオを処理するために、 .TryParse()という特別なメソッドを使用することができます。

内部例外処理を持つ.TryParse()メソッドは、 outパラメータへの出力を提供し、変換ステータスを示すブール値を返します(変換が成功した場合はtrue 、失敗した場合はfalse )。戻り値に基づいて、変換ステータスを判断することができます。一例を見てみましょう。例:

使用法1:戻り値をブール変数に格納する

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

実行後に変数isSuccessConversionをチェックして変換ステータスを確認できます。 falseの場合、 convertedIntの値は0になり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


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow