C# Language
文字列を他の型に変換する際のFormatExceptionの処理
サーチ…
文字列を整数に変換する
明示的にstring
をinteger
変換するには、 integer
ようなさまざまな方法があります。
Convert.ToInt16();
Convert.ToInt32();
Convert.ToInt64();
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