Использовать структуру или класс? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, что лучше использовать если нужно хранить позицию и вращение 2d объекта? Несколько наблюдений: Нужно иметь возможность ссылаться на трансформацию объекта, поэтому структура, передающаяся по значению, не подходит. Передавая данные в методы в которых не предполагается менять изначальную трансформацию объекта, лучше использовать структуру так как она гарантированное передается по значению. Структура, в целом, производительнее. Вариант №1: Использовать для трансформации класс. Когда необходимо получить копию трансформации использовать самописный метод .Clone(). Здесь очень велика вероятность просто забыть клонировать объект, и таким образом изменить оригинальные данные. Вариант №2: Использовать для трансформации структуру. Не нужно вручную клонировать, плюс к производительности, но нельзя передать значение по ссылке. То есть можно, но придется значения паковать и вместо красивого
Листинг программы
  1. public Transform ShapeTransform;
  2. ...
  3. ShapeTransform.Position
получится
Листинг программы
  1. public ITransformable ShapeTransform;
  2. ...
  3. ShapeTransform.Transform.Position
Есть ли еще варианты?

Решение задачи: «Использовать структуру или класс?»

textual
Листинг программы
  1. interface ITransformable
  2. {
  3.     Transform Transform { get; set; }
  4. }
  5.  
  6. struct Transform
  7. {
  8.     private Vector Position;
  9.     public float Rotation;
  10. }
  11.  
  12. class Shape : ITransformable
  13. {
  14.     public Transform Transform { get; set; }
  15. }
  16.  
  17. class Physics
  18. {
  19.     public Vector Velocity;
  20.     public ITransformable TransformableObject;
  21.  
  22.     public void Update()
  23.     {
  24.         var transform = TransformableObject.Transform;
  25.         transform.Position += Velocity;
  26.         TransformableObject.Transform = transform;
  27.     }
  28.  
  29.  
  30. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы