gpt4 book ai didi

C# 直接传递引用类型 vs out 参数

转载 作者:太空狗 更新时间:2023-10-29 17:48:29 27 4
gpt4 key购买 nike

我有两种方法:

public void A(List<int> nums) 
{
nums.Add(10);
}

public void B(out List<int> nums)
{
nums.Add(10);
}

这两个调用有什么区别?

List<int> numsA = new List<int>();
A(numsA);

List<int> numsB = new List<int>();
B(out numsB);

总的来说,我试图理解按原样传递引用类型与作为输出参数传递引用类型之间的区别。

最佳答案

在您的示例中,方法 B 将无法编译,因为 out 参数被认为是未初始化的,因此您必须先初始化它才能使用它。另外,调用带有out参数的方法时,需要在调用处指定out关键字:

B(out numsB);

而且你不需要在调用前初始化numbsB变量,因为它会被方法覆盖。

Jon Skeet 有一篇很棒的文章解释了传递参数的各种方式:Parameter passing in C#

关于C# 直接传递引用类型 vs out 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9875333/

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