Цикл в несуществующем макете структуры

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

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;
    }
}

Проблема в том, что член структуры info вызывает цикл в макете структуры. Мне нужно поведение типа структуры, подобное типу значения. Я мог бы смоделировать это, используя класс и функцию-член клона, но я не понимаю, зачем мне это нужно.

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

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

edit:

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

В поисках ответа я также создал следующий вопрос.

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

21
задан Community 23 May 2017 в 11:46
поделиться