почему переменная типа object не копирует ссылку на объект
такой вопрос: object - ссылочный тип, тогда почему при копировании из одной переменной в другую ссылка не копируется, так как это происходит с объектами других классов? Как я понимаю тут происходит boxing и переменная a должна содержать ссылку на значение в куче.
object a = 22;
object b = a;
b = 13;
Console.WriteLine(a); //22
A item1 = new A();
A item2 = new A();
item1.X = 11;
item2 = item1;
item2.X = 22;
Console.WriteLine(item1.X); // 22
class A
{
public int X { get; set; }
}
Ответы (1 шт):
Когда вы обращаетесь к членам класса в объекте, вы не выполняете ничего со ссылкой на сам объект. Если у вас 2 ссылки указывают на один объект, то можете внутри него что угодно делать, это никак не повлияет на на сами ссылки, они так и будут на него указывать. Чтобы изменить ссылку, надо в нее что-то присвоить, а вы ничего в ссылку не присваиваете.
// присваивание ссылки на объект
item = ...;
// работа с тем, что внутри объекта по ссылке
item.X = ...;
во втором случае ссылка на объект используется только как путь к члену класса, и операция присваивания относится именно к члену объекта, а не к ссылке на него.