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?
回答
TestName
不是arrTestResults[0]
的別名。
我假設arrTestResults
是string[]
而TestName
也是。
arrTestResults[0]
是一個存儲位置,其值指的是string
的實例。
TestName
是一個存儲位置,其值指的是string
的實例。
TestName = arrTestResults[0] = "";
不作TestName
一個別名arrTestResults[0]
。相反,它將存儲位置TestName
和存儲位置arrTestResults[0]
分配給string
的實例,該實例等於""
。也就是說,有一個對""
的引用。該參考被分配到arrTestResults[0]
和TestName
。這是很相似
int y = 0;
int x = y = 17;
這裏,x
不是y
的別名。我們剛剛將17
的值複製到y
和x
。在我們的案例中,值是參考。對""
的引用被複制到arrTestResults[0]
和TestName
。
然後
arrTestResults[0] = "Test 1: General";
分配一個新的參考存儲位置arrTestResults[0]
。
這很喜歡
y = 42;
然後
TestName = "Test 1: General";
分配一個新的參考存儲位置TestName
。它不會更改arrTestResults[0]
的值,因爲這兩個存儲位置是不同的。再次,這很像
x = 69;
這並不改變y
的值。
非常感謝Jason! – Maya 2011-06-13 18:34:13
我覺得你的問題的標題所示的是潛在的誤解:
數組的索引的別名
當你將一個字符串像這樣:
TestName = arrTestResults[0];
您不會爲arrTestResults[0]
中包含的內容分配別名,而是將引用複製到字符串arrTestResults[0]
指向TestName
。這是參考文獻的一個拷貝到一個字符串,但不是一個別名。
以後,當你把值賦給TestName
:
TestName = "Test 1: General";
此份新的參考,覆蓋舊的。它對數組中的引用沒有任何作用,因爲它是單獨的副本。
這不是別名;這是一個獨立變量。
不可能將變量作爲另一個變量或數組元素的別名(除非使用不安全的代碼)。
- 1. 將對象賦值給數組引用
- 2. Javascript - 將數組值賦值給名稱
- 3. 將值賦給2d數組
- 4. 將值賦給數組
- 5. 將math.random賦值給數組
- 6. 給數組賦值
- 7. 給數組賦值
- 8. 將值賦給數組,值不保留?
- 9. 將值賦給未賦值的指針之前取消引用
- 10. Smarty爲數組變量索引賦值
- 11. 將值賦給struct數組的問題!
- 12. 將數組的值賦給Enum
- 13. 使用其他數據幀的索引將值賦給矩陣
- 14. 通過邏輯索引給數組賦值不起作用
- 15. 將參數賦值給賦值?
- 16. Javascript將數組值賦給文本
- 17. 將bash數組值賦給變量
- 18. FORTRAN - 將數組值賦給變量
- 19. Java將值賦給增加數組
- 20. 如何將PHP數組值賦給Javascript?
- 21. 將數組值賦給本地變量
- 22. 將結構賦值給char數組
- 23. 將屬性賦值給多維數組
- 24. 將值賦給數組需要memcpy
- 25. 將字節值賦給char數組
- 26. 將值賦給2維數組
- 27. 將javascript數組賦值給angularjs變量
- 28. 將值賦給多維關聯數組
- 29. 將數組值賦給字段
- 30. 將32位值賦給unsigned uint8_t數組
當你說「不行」時,你是什麼意思?你會得到什麼樣的錯誤? – 2011-06-13 18:20:19
我做了一個快速觀察,看到TestName = Null – Maya 2011-06-13 18:20:57
什麼類型的對象是TestName?告訴我們它的聲明 – Omer 2011-06-13 18:21:23