Cycle en el diseño de estructura que no existe

Esta es una versión simplificada de algunos de mis códigos:

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

El problema es el errorStruct member 'info' causes a cycle in the struct layout. Estoy después de estructura como comportamiento de tipo de valor. Podría simular esto usando una clase y una función de miembro clon, pero no veo por qué debería necesitarlo.

¿Cómo es cierto este error? La recursión quizás podría causar una construcción para siempre en algunas situaciones similares, pero no puedo pensar de ninguna manera en este caso. A continuación hay ejemplos que deberían estar bien si el programa compilara.

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

editar

La solución que utilicé fue hacer que "info" sea una clase en lugar de una estructura y darle una función miembro para que devuelva una copia que utilicé al pasarla. En efecto, simula el mismo comportamiento que una estructura pero con una clase.

También creé la siguiente pregunta mientras buscaba una respuesta.

Definición de clase de tipo de valor en C #?

Respuestas a la pregunta(8)

Su respuesta a la pregunta