「copy_of_digits」配列を変更すると、「digits」配列と「parse_result」配列の両方が変更される理由がわかりません。参照渡しと値渡しに関するオンライン ヘルプを確認したところ、C# では値渡しがデフォルトであり、参照渡しには「ref」を使用する必要があると書かれています。ここで起こることは、配列が値ではなく参照によって渡されることだと思いますが、その理由と修正方法を理解できません。どんな助けでも大歓迎です!
namespace TestWithArrays
{
class Program
{
public static void Main()
{
Console.WriteLine("Please enter 2 digits:");
string user_input = Console.ReadLine();
int[] parse_result = Parse(user_input);
int[] multiply_by_two_result = MultiplyByTwo(parse_result);
Console.WriteLine("The End...");
Console.ReadLine();
}
public static int[] Parse(string user_input)
{
int[] digits = new int [2];
digits[0] = Int32.Parse(user_input.Substring(0,1));
digits[1] = Int32.Parse(user_input.Substring(1,1));
return digits;
}
public static int[] MultiplyByTwo(int[] digits)
{
int[] copy_of_digits = new int [2];
copy_of_digits = digits;
Console.WriteLine("´digits´ array before copy has been modified: " + string.Join(string.Empty, digits));
copy_of_digits[0] = copy_of_digits[0] * 2;
copy_of_digits[1] = copy_of_digits[1] * 2 ;
Console.WriteLine("´digits´ array after copy has been modified: " + string.Join(string.Empty, digits));
Console.WriteLine("´parse_result´ after copy has been modified: " + string.Join(string.Empty, digits));
return copy_of_digits;
}
}
}