C#变量数组

Dye*_*oft 1 c# arrays variables

有可能做这样的事情:

string A = "A";
string B = "B";

object[] O = { A, B };
O[0] = "C";
Run Code Online (Sandbox Code Playgroud)

到底哪里A会保值"C"

上面的代码将替换O[0]"C",但A保持不变.

Jon*_*eet 12

不 - 至少不是安全的代码.

创建数组时,它会将复制到数组中.稍后更改数组中的值不会更改变量的值.没有办法创建一种"ref数组",其中数组元素与变量共享.(如Mark的回答所示,有时在不安全的代码中这样做的方法,但我真的建议远离它.)

但是请注意,如果数组和变量都引用相同的可变对象,那么通过任一路径改变该对象将进行通过另一个可见的更改:

StringBuilder x = new StringBuilder();
StringBuilder[] array = new StringBuilder[] { x };

array[0].Append("Foo");
Console.WriteLine(x); // Prints "Foo"
Run Code Online (Sandbox Code Playgroud)

这与任何其他赋值没什么不同 - 并注意在上面的代码中,Append调用不会改变任何一个x或数组元素的值; 它会更改这些值所引用的对象中的数据.