Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A "struct1" típusú struct2 tag "struct2 mező" ciklust okoz az struktúra elrendezésében
Egy vagy több szerkezet definíciója olyan rekurzív hivatkozásokat tartalmaz, amelyek ciklust alkotnak. Ez a korlátozás csak a szerkezetekre vonatkozik, mivel a szerkezetek értéktípusok. Rekurzív hivatkozások létrehozásához deklarálja a típusokat osztályként, amelyek referenciatípusok.
1. példa
Az alábbi minta bemutatja, hogy egy önhivatkozási típus hogyan okozhatJA a CS0523-at:
// CS0523.cs
// compile with: /target:library
struct SelfReferentialStruct
{
public SelfReferentialStruct other; // CS0523
}
class SelfReferentialClass
{
public SelfReferentialClass other; // OK
}
Ha önhivatkozási struktúratípust hoz létre, az a tag típusával megegyező típusú példányt tartalmaz. Ennek a tagnak azonban van egy másik példánya, amely rekurzív módon folytatódik. A ciklus eredményeként a típus mérete nem határozható meg, és a CS0523 ki lesz bocsátva.
2. példa
Az alábbi minta bemutatja, hogy egy típushivatkozási ciklus hogyan okozhatJA a CS0523-at:
// CS0523b.cs
// compile with: /target:library
struct ReferenceCycleStruct1
{
public ReferenceCycleStruct2 other; // CS0523
}
struct ReferenceCycleStruct2
{
public ReferenceCycleStruct3 other; // CS0523
}
struct ReferenceCycleStruct3
{
public ReferenceCycleStruct1 other; // CS0523
}
A fenti hibák megoldásához módosíthatja a hivatkozásokat úgy, hogy a ciklusok már nem alakulnak ki, vagy az egyik szerkezettípust osztálysá alakíthatja. Az előző példához ReferenceCycleStruct1 hasonlóan tartalmaz egy ReferenceCycleStruct2, és egy ReferenceCycleStruct3, amely végül újra tartalmaz ReferenceCycleStruct1 .