Ron*_*ein 8 .net methods properties environment-variables
我试图了解创建该方法的团队的设计考虑因素Environment.GetCommandLineArgs.
它可能是一个静态属性,非常像System.Web.HttpContext.Current.毕竟,返回的值一旦可用就不应该改变.所以它更像是当前运行过程的属性.
我知道.NET中的任何属性都是getter/setter方法的语法糖.但这是使用属性而不是显式getter方法的确切原因.
或者也许我在这里缺少一些东西?
你怎么看?
我怀疑这是因为每次调用它时它都会复制该数组。例如,考虑这个程序:
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]);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用“测试原始”运行它,它仍然会打印出“原始”。
所以当你说:
毕竟,返回值一旦可用就不应更改。
实际上,它会在每次调用时返回不同的值(一个新的数组引用),正是因为数组总是可变的。