共用方式為


編譯器錯誤 CS0523

結構成員 'struct2 field' (類型為 'struct1') 在結構配置中造成循環

一或多個結構的定義包含形成迴圈的遞迴參考。 這項限制僅適用於結構,因為結構是實值型別。 若要建立遞迴參考,請將型別宣告為類別,也就是參考型別。

範例 1

下列範例示範自我參考型別如何造成 CS0523:

// CS0523.cs
// compile with: /target:library
struct SelfReferentialStruct
{
    public SelfReferentialStruct other;   // CS0523
}

class SelfReferentialClass
{
    public SelfReferentialClass other;   // OK
}

建立自我參考結構型別時,其包含與成員相同型別的複本。 不過,該成員接著有另一個以遞迴方式繼續的複本。 因迴圈而無法判斷型別的大小,且會發出 CS0523。

範例 2

下列範例示範型別參考迴圈如何造成 CS0523:

// CS0523b.cs
// compile with: /target:library
struct ReferenceCycleStruct1
{
    public ReferenceCycleStruct2 other;   // CS0523
}

struct ReferenceCycleStruct2
{
    public ReferenceCycleStruct3 other;   // CS0523
}

struct ReferenceCycleStruct3
{
    public ReferenceCycleStruct1 other;   // CS0523
}

若要解決上述錯誤,您可以調整參考,讓迴圈不再形成,或將至少一個結構型別轉換成類別。 類似於上一個範例,ReferenceCycleStruct1 包含 ReferenceCycleStruct2,且包含 ReferenceCycleStruct3,最終會再次包含 ReferenceCycleStruct1