将值赋给数组的索引并将值赋给数组索引的别名有什么区别?

May*_*aya -2 c# arrays

public string[] arrTestResults = new string[8];
public string TestName;
[TestInitialize]
 public void SetupTest()
    {
        // Assigning aliases to array indexes
        TestName = arrTestResults[0] = "";
    }


  public void General()
    {
        arrTestResults[0] = "Test 1: General"; // works

        TestName = "Test 1: General"; // does not work. Quick Watch says TestName = Null. WHY? 
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

我认为你的问题标题显示了潜在的误解:

数组索引的别名

当您指定如下字符串时:

TestName = arrTestResults[0];
Run Code Online (Sandbox Code Playgroud)

你没有为包含的内容分配别名arrTestResults[0],而是你正在复制对字符串arrTestResults[0]指向的引用TestName.这是对字符串的引用副本,但不是别名.

稍后,当您为以下值分配值时TestName:

TestName = "Test 1: General";
Run Code Online (Sandbox Code Playgroud)

这会复制一个新的引用,覆盖旧的引用.它对数组中的引用没有任何作用,因为它是一个单独的副本.