Страницы

Поиск по вопросам

пятница, 26 октября 2018 г.

Разница между вызовом методов класса и структур

Имеется такая ситуация
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 нет) Интересно чему все таки это значение присваивается и почему с классами работает, а со структурой нет.


Ответ

Потому что структура это ValueType и копируется полностью.
В результате вызова
get { return cord; }
Будет новый объект структуры, в котором ты и вызываешь метод SetX

Комментариев нет:

Отправить комментарий