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.
Ez a cikk a következő fordítóhibákat és figyelmeztetéseket ismerteti:
- CS9125: A SizeConst attribútumparamétert meg kell adni.
-
CS9164: Nem konvertálható kifejezés
Span<T>, mert nem hozzárendelhető változó -
CS9165: Nem konvertálható a kifejezés
ReadOnlySpan<T>, mert lehet, hogy nem továbbítja vagy nem adja vissza hivatkozással - CS9166: Az index kívül esik a beágyazott tömb határain
- CS9167: A beágyazott tömb hosszának 0-nál nagyobbnak kell lennie.
- CS9168: A beágyazott tömbstruktúra nem rendelkezhet explicit elrendezésűel.
- CS9169: A beágyazott tömbszerkezetnek egy és csak egy példánymezőt kell deklarálnia, amely nem lehet hiv mező.
-
CS9172: A beágyazott tömbtípusok elemei csak egyetlen argumentummal érhetők el implicit módon átalakíthatóvá
int, vagySystem.Index.System.Range - CS9173: Előfordulhat, hogy egy beágyazott tömbelérés nem rendelkezik elnevezett argumentum-megjelölővel
- CS9180: A beágyazott tömbelem mező nem deklarálható kötelezőként, olvashatóan, illékonyként vagy rögzített méretű pufferként.
- CS9181: A beágyazott tömbindexelő nem használható elemhozzáférés-kifejezéshez.
- CS9182: A "Slice" beágyazott tömb metódusa nem használható elemelérési kifejezéshez.
- CS9183: A beágyazott tömbkonvertálási operátor nem használható a deklarálási típus kifejezéséből való átalakításhoz.
-
CS9184: A beágyazott tömbök nyelvi funkciója nem támogatott olyan beágyazott tömbtípusok esetében, amelyek elemmezője ""
refmező, vagy típusargumentumként érvénytelen típussal rendelkezik. -
CS9189:
foreachegy beágyazott típusú tömb utasítása nem támogatott - CS9259: Az attribútum System.Runtime.CompilerServices.InlineArrayAttribute nem alkalmazható rekordstruktúra esetén.
Beágyazott tömbdeklaráció
A beágyazott tömböket egyetlen mezővel rendelkező típusként és a tömb hosszát meghatározó attribútumként struct deklarálhatja. A fordító a következő hibákat generálja érvénytelen beágyazott tömbdeklarációk esetén:
- CS9125: A SizeConst attribútumparamétert meg kell adni.
- CS9167: A beágyazott tömb hosszának 0-nál nagyobbnak kell lennie.
- CS9168: A beágyazott tömbstruktúra nem rendelkezhet explicit elrendezésűel.
- CS9169: A beágyazott tömbszerkezetnek egy és csak egy példánymezőt kell deklarálnia, amely nem lehet hiv mező.
- CS9180: A beágyazott tömbelem mező nem deklarálható kötelezőként, olvashatóan, illékonyként vagy rögzített méretű pufferként.
-
CS9184: A beágyazott tömbök nyelvi funkciója nem támogatott olyan beágyazott tömbtípusok esetében, amelyek elemmezője ""
refmező, vagy típusargumentumként érvénytelen típussal rendelkezik. - CS9259: Az attribútum System.Runtime.CompilerServices.InlineArrayAttribute nem alkalmazható rekordstruktúra esetén.
A tömbök javításához győződjön meg arról, hogy a következők teljesülnek:
- A argumentum System.Runtime.CompilerServices.InlineArrayAttribute pozitív egész szám.
- A beágyazás
structnem határoz meg explicit elrendezést. - A beágyazás
structegyetlen példánymezővel rendelkezik, és ez a példánymező nemrefmező. - Az egypéldányos mező nem rögzített méretű puffer.
- Az egypéldányos mező nem tartalmazza a
required,volatilevagyreadonlymódosítókat. - Távolítsa el a
recordmódosítót a beágyazott tömbdeklarációból.
Elemhozzáférés
A beágyazott tömb elemeit ugyanúgy érheti el, mint bármely tömböt. A fordító a következő hibákat bocsátja ki a helytelen elemhozzáférésből:
- CS9166: Az index kívül esik a beágyazott tömb határain
-
CS9172: A beágyazott tömbtípusok elemei csak egyetlen argumentummal érhetők el implicit módon átalakíthatóvá
int, vagySystem.Index.System.Range - CS9173: Előfordulhat, hogy egy beágyazott tömbelérés nem rendelkezik elnevezett argumentum-megjelölővel
-
CS9189:
foreachegy beágyazott típusú tömb utasítása nem támogatott
Emellett a fordító a következő figyelmeztetést adja ki indexelő deklarálásakor:
- CS9181: A beágyazott tömbindexelő nem használható elemhozzáférés-kifejezéshez.
A beágyazott pufferhez létrehozott kód közvetlenül éri el a puffermemóriát, megkerülve a deklarált indexelőket. Beágyazott tömbök nem használhatók az foreach utasítással.
Az indexelő argumentumának a következőnek kell lennie:
- Az alábbi három típus egyike:
intaSystem.Indexvagy aSystem.Range. - Nem lehet névvel ellátott argumentum. A fordító létrehozza az elem tartozékát. A paraméternek nincs neve, ezért nevesített argumentumokat nem használhat.
- A tömb határai közé tartozik. Az összes .NET-tömbhöz hasonlóan a beágyazott tömbelem-hozzáférés is be van jelölve. Az indexnek a beágyazott tömbön belül kell lennie.
Átszámítás spanra
Gyakran használ System.Span<T> vagy System.ReadOnlySpan<T> használ beágyazott tömböket. A fordító az alábbi hibákat generálja érvénytelen konverziók esetén:
-
CS9164: Nem konvertálható kifejezés
Span<T>, mert nem hozzárendelhető változó -
CS9165: Nem konvertálható a kifejezés
ReadOnlySpan<T>, mert lehet, hogy nem továbbítja vagy nem adja vissza hivatkozással
A fordító olyan kódot hoz létre, amely közvetlenül hozzáfér egy beágyazott puffer memóriájába. Ezért néhány tagot soha nem hívnak meg. A fordító a következő figyelmeztetéseket hozza létre, ha olyan tagot ír, akit soha nem hív meg:
- CS9182: A "Slice" beágyazott tömb metódusa nem használható elemelérési kifejezéshez.
- CS9183: A beágyazott tömbkonvertálási operátor nem használható a deklarálási típus kifejezéséből való átalakításhoz.
A beágyazott tömbök implicit módon átalakíthatók beágyazott tömbökké Span<T> , vagy ReadOnlySpan<T> átadhatók egy beágyazott tömbnek a metódusok számára. A fordító kikényszeríti az ilyen átalakításokra vonatkozó korlátozásokat:
- A beágyazott tömbnek írhatónak kell lennie ahhoz, hogy beágyazott tömböt
Span<T>alakíthasson át . Ha a tömb írásvédett, nem konvertálhatja írhatóváSpan<T>.ReadOnlySpan<T>Használhatja helyette. - A beágyazott tömb biztonságos környezetének legalább olyan szélesnek kell lennie, mint az átalakítás biztonságos környezete
Span<T>vagyReadOnlySpan<T>sikeressége. Vagy korlátoznia kell a hatókört, vagy ki kell bontania a beágyazott tömb hatókörét.
Emellett a fordító soha nem generál hívásokat egy Slice metódushoz beágyazott pufferben. Átalakító operátorok beágyazott pufferekká alakításához Span , vagy ReadOnlySpan nem hívhatók meg. A fordító létrehoz egy System.Span<T> vagy System.ReadOnlySpan<T> közvetlenül a memóriapufferből származó kódot.