Страницы

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

воскресенье, 15 декабря 2019 г.

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

#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.

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

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