猿问

返回数组操作 C# 中的原始值

这是我在网站上的第一个问题,我相信我会在这里找到答案。


在学校,我试图为我们面临的挑战做一些基本的 C# 编码。


这是问题所在:


通常,当我通过一个方法传递一个值时,我不会遇到问题。像这样:


static void Main(string[] args)

{

    // Declare Integer

    int originalInt = 20;


    // Call the Method

    int multipliedInt = Multiplication(originalInt);


    // Prompt

    Console.WriteLine("Original: {0} Modified: {1}", originalInt, multipliedInt);

}


// Method

static public int Multiplication(int original) 

{

    // Quik Maffs

    int modifiedValue = original * 2;


    return modifiedValue;

}

上面的例子工作得很好。原始值为 20,修改值为 40。


但是,当我尝试使用数组执行此操作时,情况会发生变化:


static void Main(string[] args)

{

    // Declare Original Array

    int[] originalArray = new int[] {1, 4, 6, 8, 12};


    // Call Method

    int[] multipliedArray = Multiplication(originalArray);


    // Prompt

    Console.WriteLine("Original: [{0}], Multiplied: [{1}]", String.Join(", ", originalArray), String.Join(", ", multipliedArray));

}


// Method

static public int[] Multiplication(int[] original) 

{

    // New Int

    int[] modified = original;


    // Loop

    for (int i = 0; i < modified.Length; i++) 

    {

        modified[i] *= 2;

    }


    return modified;

}

上面的代码两次返回修改后的值。似乎它也修改了原始值。


知道为什么会这样吗?


红糖糍粑
浏览 217回答 1
1回答
随时随地看视频慕课网APP
我要回答