Имеется такая ситуация
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
Комментариев нет:
Отправить комментарий