这是我在网站上的第一个问题,我相信我会在这里找到答案。
在学校,我试图为我们面临的挑战做一些基本的 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;
}
上面的代码两次返回修改后的值。似乎它也修改了原始值。
知道为什么会这样吗?
相关分类