Определение выглядит следующим образом:
Line 1) object[] arr = new object[4];
Line 2) arr[0] = arr;
arr[0]
теперь является другим псевдонимом для arr
, и оба значения arr
и arr[0]
имеют то же значение, что и адрес данных массива.
Состояние памяти может быть, например, следующим:
После строки 1:
Address Value
@100: 104 // arr variable
@104: 0 // cell[0] of array data
@108: 0 // cell[1] of array data
@112: 0 // cell[2] of array data
@116: 0 // cell[3] of array data
После строки 2:
Address Value
@100: 104 // arr variable
@104: 104 // cell[0] of array data
@108: 0 // cell[1] of array data
@112: 0 // cell[2] of array data
@116: 0 // cell[3] of array data