#c_sharp #классы #структуры
Имеется такая ситуация struct Point { int x; int y; public void SetX(int a){ ... } public void SetY(int a){ ... } } class A { Point cord = new Point(); public Point Cord { get { return cord; } } public void MethodA(int a) { cord.SetX(a); //здесь все ок } } class B { A myObj = new A(); public Point Cord { get { return cord; } } public void MethodB(int a) { myObj.Cord.SetX(a); //а здесь не присваивает значение } } В классе А метод отрабатывает верно, а в классе B нет( заходит в метод , где то чему то значение присваивает , но в объекте myObj и в его поле cord типа Point нет) Интересно чему все таки это значение присваивается и почему с классами работает, а со структурой нет.
Ответы
Ответ 1
Потому что структура это ValueType и копируется полностью. В результате вызова get { return cord; } Будет новый объект структуры, в котором ты и вызываешь метод SetX.
Комментариев нет:
Отправить комментарий