C# - 对象引用:将一个对象的值赋给另一个对象

时间:2017-06-02 12:33:55

标签: c# variables object reference

当我在运行以下程序时,我正在努力解决我遇到的问题:

using System;

namespace StringReversal
{
   class MainClass
   {
    public static void Main(string[] args)
    {
        string example = "word";
        char[] myArray = new char[example.Length];          
        myArray = example.ToCharArray(0, example.Length);

        char[] reverseArray = new char[example.Length];
        reverseArray = myArray;

        Array.Reverse(reverseArray);

        Console.WriteLine(myArray);
        Console.WriteLine(reverseArray);

      }
   }
 }

输出如下:

drow

drow

我最好的猜测是因为我正在使用对象引用将myArray的值分配给reverseArrays,然后在Array.Reverse()上运行reverseArray方法

虽然我确定已经讨论过这个问题,但我想知道我是否可以通过这种方式得到解释。我总是为变量赋值而不会出现问题,如下所示:

 int x = 10;
 int y = 5;
 x = y;
 // x would then equal 5, correct?

感谢您的见解!

1 个答案:

答案 0 :(得分:2)

您正在代码中为数组分配引用,而不是复制:

reverseArray = myArray;

因此,您基本上有2个对同一对象的引用。您必须通过调用Array.Copy将myArray复制到reverseArray,例如