Цикл в структуре структуры, которая не существует

Это упрощенная версия моего кода:

public struct info
{
    public float a, b;
    public info? c;

    public info(float a, float b, info? c = null)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }
}

Проблема в ошибкеStruct member 'info' causes a cycle in the struct layout. Я после структуры, как поведение типа значения. Я мог бы смоделировать это, используя класс и функцию-клон, но я не понимаю, зачем мне это нужно.

Как эта ошибка верна? Возможно, рекурсия может привести к созданию навсегда в некоторых подобных ситуациях, но я не могу придумать, как это могло бы произойти в этом случае. Ниже приведены примеры, которые должны подойти, если программа будет компилироваться.

new info(1, 2);
new info(1, 2, null);
new info(1, 2, new info(3, 4));

редактировать:

Решение, которое я использовал, состояло в том, чтобы сделать «info» классом вместо структуры и дать ему функцию-член для возврата копии, которую я использовал при передаче. Фактически имитирует то же поведение, что и структура, но с классом.

Я также создал следующий вопрос, ища ответ.

Определение типа значения класса в C #?

Ответы на вопрос(4)

Ваш ответ на вопрос