Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Struct member 'struct2 field' van het type 'struct1' veroorzaakt een cyclus in de structindeling
De definities van een of meer structs bevatten recursieve verwijzingen die een cyclus vormen. Deze beperking geldt alleen voor structs, omdat structs waardetypen zijn. Als u recursieve verwijzingen wilt maken, declareert u uw typen als klassen. Dit zijn referentietypen.
Voorbeeld 1
In het volgende voorbeeld ziet u hoe een zelfverwijzend type CS0523 kan veroorzaken:
// CS0523.cs
// compile with: /target:library
struct SelfReferentialStruct
{
public SelfReferentialStruct other; // CS0523
}
class SelfReferentialClass
{
public SelfReferentialClass other; // OK
}
Wanneer een zelfverwijzend structtype wordt gemaakt, bevat het een kopie van hetzelfde type als een lid. Dat lid heeft echter nog een kopie, die recursief wordt voortgezet. Als gevolg van de cyclus kan de grootte van het type niet worden bepaald en CS0523 wordt verzonden.
Voorbeeld 2
In het volgende voorbeeld ziet u hoe een typereferentiecyclus CS0523 kan veroorzaken:
// CS0523b.cs
// compile with: /target:library
struct ReferenceCycleStruct1
{
public ReferenceCycleStruct2 other; // CS0523
}
struct ReferenceCycleStruct2
{
public ReferenceCycleStruct3 other; // CS0523
}
struct ReferenceCycleStruct3
{
public ReferenceCycleStruct1 other; // CS0523
}
Als u de bovenstaande fouten wilt oplossen, kunt u de verwijzingen zodanig aanpassen dat een cyclus niet meer wordt gevormd of ten minste één van de structtypen converteren naar een klasse. Vergelijkbaar met het vorige voorbeeld bevat ReferenceCycleStruct1 een ReferenceCycleStruct2, en die een ReferenceCycleStruct3, die uiteindelijk weer bevat ReferenceCycleStruct1 .