Использовать структуру или класс? - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д