Потому что, когда вы используете Strings [0], вы фактически получаете доступ к свойству, а не к фактической строке.Таким образом, когда вы используете
sl1->Strings[0] += " World";
, на самом деле происходит вызов метода read для свойства Strings, которое затем приводит к появлению строки.В этой результирующей строке вы объединяете что-то еще.
Это вовсе не меняет внутреннюю строку свойства.
В этом случае, просто для понимания того, как это работает, вы можете подумать, что чтение
sl1->Strings[0]
- это то же самое, что вызов функции, которая возвращает строку (и на самом деле,это так! Потому что когда вы читаете свойство, оно запускается, это метод read).