gpt4 book ai didi

c# - 按引用传递引用与按值传递引用 - C#

转载 作者:行者123 更新时间:2023-11-30 13:34:08 25 4
gpt4 key购买 nike

问候,

我知道按值传递和按引用传递之间的区别。但是通过 ref 传递引用(例如数组)并通过值传递数组是我似乎无法理解的。如何通过引用传递引用?

     int[] myArray = {1,2,3};
PassByVal(myArray);
PassByRef(ref myArray);

PassByVal(int[] array)
{ array = new int[] {7,8,9}; // will not work }

PassByRef(ref int[] array)
{ array = new int[] {10,11,12}; } // will work

最佳答案

如果通过引用传递引用,则可以使传入的变量指向一个新对象。如果按值传递引用,您仍然可以更改对象的状态,但不能使变量指向不同的对象。

示例:

void RefByRef(ref object x)
{
x=new object(2);
}

void RefByValue(object x)
{
x=new object(2);//Only changes a local variable and gets discarded once the function exits
}

void Test()
{
object x1=1;
object x1a=x1;
RefByRef(ref x1);
//x1 is now a boxed 2
//x1a is still a boxed 1


object x2=1;
RefByValue(x2);
//x2 is still a boxed 1
}

关于c# - 按引用传递引用与按值传递引用 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4159943/

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