興味深いことに、Int32.TryParse(String, Int32)
失敗した場合、int引数は変更されないままであると想定しても安全ですか?たとえば、整数にデフォルト値を設定したい場合は、どちらが賢明ですか?
int type;
if (!int.TryParse(someString, out type))
type = 0;
また
int type = 0;
int.TryParse(someString, out type);
ドキュメントには答えがあります:
変換が成功した場合はsに含まれる数値に相当する32ビットの符号付き整数値が含まれ、変換が失敗した場合はゼロが含まれます。
TryParse
に設定し0
ます。
パラメータであるout
ため、失敗しても値を設定せずに戻ることはできません。
TryParseは、他の処理を行う前に結果を0に設定します。したがって、最初の例を使用してデフォルト値を設定する必要があります。
失敗した場合はfalseを返し、typeをゼロに設定します。結果として、これが最も賢明です。
int type;
if (int.TryParse(someString, out type))
; // Do something with type
else
; // type is set to zero, do nothing