TryParse() 返回什么值?

What value is returned in TryParse()?

我正在看书Fundamentals of Computer Programming with C#

string str = Console.ReadLine();
int Value;  
bool parseSuccess = Int32.TryParse(str, out Value);
Console.WriteLine(parseSuccess ? "The square of the number is " + (Value * Value) + " . "  : "Invalid number!" );

所以我的问题是,在第三行 bool parseSuccess = Int32.TryParse(str, out Value);Int32.TryParse() 不是 return 一个 int 值吗?怎么会是bool?关键字 out 到底是什么意思?

正如方法所说,TryParse,所以它意味着它是否能够解析,这就是布尔值所指示的。

True:能够成功解析,并且可以从out参数中检索到解析值。

False:无法将字符串值解析为 int。它不会抛出任何异常,而是告诉您使用此布尔标志,在这种情况下,您可以使用 out 参数的默认值(即 0)或分配您选择的其他值,如下所示:

int intValue = int.TryParse(stringValue, out intValue) ? intValue : myDefaultValue;//mydefaultValue is int containing value of your choice

int.TryParse syntatic sugar

How the int.TryParse actually works

Int32.TryParse returns 一个布尔值,表示解析是否成功(如果字符串包含非数字字符,则转换将失败)。

out表示参数是按引用传递的(也就是说传递给TryParse函数的是你变量的内存地址)

您的部分问题似乎是:

Why is TryParse defined as bool TryParse(string, out int) instead of int TryParse(string, out bool)?

原因是所选签名允许这种常见模式:

int x;
if (int.TryParse(s, out x))
    Console.WriteLine(x); //or do whatever else

对于另一个签名,我们需要这样做:

bool success;
int x = int.TryParse(s, out success);
if (success)
    Console.WriteLine(x); // or do whatever else

第一个稍微简洁一些,显然,根据我的经验,至少大部分 TryParse 调用直接用于流量控制,而不是将 return 值分配给变量。