Это упрощенная версия некоторого кода:
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" классом вместо структуры и предоставить ему функцию-член, чтобы вернуть копию, которую я использовал при ее передаче. По сути, имитирует то же поведение, что и структура, но с классом.
Я также задал следующий вопрос при поиске ответа.