gpt4 book ai didi

c# - 何时使用 in vs ref vs out

转载 作者:IT王子 更新时间:2023-10-29 03:27:51 24 4
gpt4 key购买 nike

前几天有人问我什么时候应该使用参数关键字out 而不是ref。虽然我(我认为)理解 refout 关键字(一直是 asked before )之间的区别,但最好的解释似乎是 ref == inout,我应该始终使用 out 而不是 的一些(假设或代码)示例引用

既然 ref 更通用,为什么还要使用 out?它只是语法糖吗?

最佳答案

除非你需要ref,否则你应该使用out

当数据需要编码时,它会产生很大的不同,例如到另一个过程,这可能是昂贵的。因此,您希望避免在方法未使用初始值时编码初始值。

除此之外,它还向声明或调用的读者显示初始值是相关的(并可能保留)还是被丢弃。

作为一个小的区别,out 参数不需要初始化。

out 示例:

string a, b;
person.GetBothNames(out a, out b);

其中 GetBothNames 是一种以原子方式检索两个值的方法,无论 a 和 b 是什么,该方法都不会改变行为。如果调用转到夏威夷的服务器,将初始值从这里复制到夏威夷是浪费带宽。使用 ref 的类似代码段:

string a = String.Empty, b = String.Empty;
person.GetBothNames(ref a, ref b);

可能会让读者感到困惑,因为看起来 a 和 b 的初始值是相关的(尽管方法名称表明它们不是相关的)。

ref 示例:

string name = textbox.Text;
bool didModify = validator.SuggestValidName(ref name);

这里的初始值与方法有关。

关于c# - 何时使用 in vs ref vs out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516876/

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