Использовать структуру или класс? - 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;
    }
 
 
}

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


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

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

7   голосов , оценка 3.857 из 5
Похожие ответы