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 值分配给变量。
我正在看书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 ofint 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 值分配给变量。