这是我的一些代码的简化版本:
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));
edit:
我使用的解决方案是使“info”成为一个类而不是一个结构,并为其提供一个成员函数以返回我在传递它时使用的副本。实际上,模拟与结构相同的行为,但使用类。
我在寻找答案时还创建了以下问题。
C# 中的值类型类定义? https://stackoverflow.com/questions/9297114/value-type-class-definition-in-c