c#array.反向反向按值传递给方法的原始数组



我在一种方法中具有一个char数组,某些对象是通过参考getchars方法传递的任意对象:

private void DoSomeStuff(ref Object someObject)
{
   char[] chars = GetChars(ref someObject); // {'a','b','c','d'}
   char[] ReversedChars = Reverse(chars); // {'d','d','b','a'}
   //chars and ReversedChars are in the same order, although "ref" is not used
}
private char[] Reverse(char[] someChars)
{
   Array.Reverse(someChars);
   return someChars;
}

为什么在另一种方法中,array。逆转如果不通过引用传递的原始传递的char数组?

数组是对象,所以:参考类型。

它正在传递参考 - 按值。因此:如果将引用指向的内容(即数组数据(,则该更改仍然对每个人都可以看到,他们也对同一对象进行引用。/p>

这里只有一个数组;实际上,没有其他数据可以更改

通过参考参考文献仅在您将参考

重新分配给另一个对象的情况下才有意义。

数组是参考类型(根据.NET是一种对象(。当您调用例程时,您将返回相同的参考,并且仅更改其中元素的顺序。

如果您希望它不影响原始结果,请在反转结果之前复制阵列。

作为数组是一种引用类型,如果您不想影响原始值,则需要制作数组的副本。

要这样做,将您的反向方法更新到以下方式:

private char[] Reverse(char[] someChars)
    {
        char[] cloneArray = someChars.Clone() as char[];
        Array.Reverse(cloneArray);
        return cloneArray;
    }

相关内容

  • 没有找到相关文章

最新更新