3

興味深いことに、Int32.TryParse(String, Int32)失敗した場合、int引数は変更されないままであると想定しても安全ですか?たとえば、整数にデフォルト値を設定したい場合は、どちらが賢明ですか?

int type;
if (!int.TryParse(someString, out type))
    type = 0;

また

int type = 0;
int.TryParse(someString, out type);
4

4 に答える 4

9

ドキュメントには答えがあります:

変換が成功した場合はsに含まれる数値に相当する32ビットの符号付き整数値が含まれ、変換が失敗した場合はゼロが含まれます。

于 2010-10-31T23:59:13.497 に答える
7

TryParseに設定し0ます。

パラメータであるoutため、失敗しても値を設定せずに戻ることはできません。

于 2010-10-31T23:56:41.637 に答える
2

TryParseは、他の処理を行う前に結果を0に設定します。したがって、最初の例を使用してデフォルト値を設定する必要があります。

于 2010-10-31T23:56:10.920 に答える
1

失敗した場合はfalseを返し、typeをゼロに設定します。結果として、これが最も賢明です。

int type;

if (int.TryParse(someString, out type)) 
  ; // Do something with type
else 
  ; // type is set to zero, do nothing
于 2010-10-31T23:55:59.047 に答える