Я подозреваю, что это потому, что он делает копию массива каждый раз, когда вы вызываете его. Например, рассмотрим эту программу:
using System;
public class Test
{
static void Main(string[] args)
{
string[] argsCopy = Environment.GetCommandLineArgs();
args[0] = "x";
// 0 is the command in this case
argsCopy[1] = "y";
string[] argsCopy2 = Environment.GetCommandLineArgs();
Console.WriteLine(argsCopy2[1]);
}
}
Если вы запустите это с «тестовым оригиналом», он все равно распечатает «оригинал».
Итак, когда вы говорите:
В конце концов, возвращаемое значение не должно изменяться, если оно доступно.
На самом деле, он будет возвращать другое значение (новую ссылку на массив) при каждом вызове, именно потому, что массивы всегда изменяемы.