出于兴趣,假设如果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