gpt4 book ai didi

c# - 为什么 TryParse 方法使用 out 参数而不是 ref

转载 作者:可可西里 更新时间:2023-11-01 08:05:54 26 4
gpt4 key购买 nike

有点在这个 question 的后面询问 out 参数的行为,但更关注为什么这些 TryParse 方法使用 out 而不是 ref

在某些情况下,您确实希望在解析之前为参数初始化一个值,并在解析失败时保留该值,但并不关心它是否真的失败了。然而,由于 out 参数,该值被重置。

这个场景可能看起来像这样......

int arg = 123;
Int32.TryParse(someString, ref arg);

但是因为out参数,我们不得不这样写,比较冗长...

int arg;
if(!Int32.TryParse(someString, out arg)
{
arg = 123;
}

我意识到知道解析失败可能非常有用,但是使用 ref 并不排除这一点。

那么为什么这些 TryParse 方法使用 out 而不是 ref

最佳答案

因为正常的使用模式和你描述的完全相反。

人们应该会写

int arg;
if (!Int32.TryParse(someString, ref arg)) {
Waaah;
}

如果 TryParse 采用了 ref 参数,这将需要无用的初始化。

真正的问题是为什么没有 int? int.TryParse(string) 方法。

关于c# - 为什么 TryParse 方法使用 out 参数而不是 ref,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com