Использовать структуру или класс? - C#
Формулировка задачи:
Здравствуйте, что лучше использовать если нужно хранить позицию и вращение 2d объекта?
Несколько наблюдений:
Нужно иметь возможность ссылаться на трансформацию объекта, поэтому структура, передающаяся по значению, не подходит.
Передавая данные в методы в которых не предполагается менять изначальную трансформацию объекта, лучше использовать структуру так как она гарантированное передается по значению.
Структура, в целом, производительнее.
Вариант №1: Использовать для трансформации класс. Когда необходимо получить копию трансформации использовать самописный метод .Clone(). Здесь очень велика вероятность просто забыть клонировать объект, и таким образом изменить оригинальные данные.
Вариант №2: Использовать для трансформации структуру. Не нужно вручную клонировать, плюс к производительности, но нельзя передать значение по ссылке. То есть можно, но придется значения паковать и вместо красивого
получится
Есть ли еще варианты?
Листинг программы
- public Transform ShapeTransform;
- ...
- ShapeTransform.Position
Листинг программы
- public ITransformable ShapeTransform;
- ...
- ShapeTransform.Transform.Position
Решение задачи: «Использовать структуру или класс?»
textual
Листинг программы
- interface ITransformable
- {
- Transform Transform { get; set; }
- }
- struct Transform
- {
- private Vector Position;
- public float Rotation;
- }
- class Shape : ITransformable
- {
- public Transform Transform { get; set; }
- }
- class Physics
- {
- public Vector Velocity;
- public ITransformable TransformableObject;
- public void Update()
- {
- var transform = TransformableObject.Transform;
- transform.Position += Velocity;
- TransformableObject.Transform = transform;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д