gpt4 book ai didi

c# - 传递数组作为参数

转载 作者:行者123 更新时间:2023-11-30 13:14:37 24 4
gpt4 key购买 nike

如果我们在方法中修改作为参数传递的数组的内容,修改是在参数的副本而不是原始参数上完成的,因此结果是不可见的。

当我们调用具有引用类型参数的方法时会发生什么过程?

这是我想问的代码示例

      using System;

namespace Value_Refrence_Type
{
class Program
{
public static void Main()
{
int[] callingarray = { 22, 200, 25485 };
abc(callingarray);
Console.WriteLine("This is callingarray");
foreach (int element in callingarray)
Console.WriteLine(element);
}



//method parameter
static void abc(int[] calledarray)
{
Console.WriteLine("Method Called--------");
foreach (int element in calledarray)
Console.WriteLine(element);

//Here on changing the value of elements of calledarray does't afftect the value of element of callingarray
//if both refrences to same memory location then the value needs to change, which is not happening here
calledarray = new int[] {55, 54, 65};
foreach (int element in calledarray)
Console.WriteLine(element);
}

}
}

最佳答案

不,那是不正确的。

在 C# 中,参数默认按值传递,这意味着您获得了变量的副本。但重要的是要意识到复制的只是变量,不一定是对象;如果变量持有引用类型(例如数组),那么该变量实际上只是指向对象所在内存地址的“指针”。因此,当您将所述变量传递给方法调用时,引用会被复制,但它仍然指向原始变量所引用的完全相同的对象。

当参数是值类型时,情况就大不相同了。在那种情况下,变量本身包含对象,因此您会得到您似乎期望的行为。

关于c# - 传递数组作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498677/

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