相关疑难解决方法(0)

在不存在的结构布局中循环

这是我的一些代码的简化版本:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是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));
Run Code Online (Sandbox Code Playgroud)

编辑:

我使用的解决方案是使"info"成为一个类而不是一个struct,并给它一个成员函数来返回我在传递它时使用的副本.实际上模拟与结构相同但具有类的行为.

我在寻找答案时也创建了以下问题.

C#中的值类型类定义?

c# constructor struct member cyclic-reference

21
推荐指数
3
解决办法
7107
查看次数

标签 统计

c# ×1

constructor ×1

cyclic-reference ×1

member ×1

struct ×1