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 ismerteti:
- CS0022: Nem megfelelő számú index található a(z) []ben, a várt "szám"
-
CS0178: Érvénytelen dimenziómegjelölő: várt "
," vagy "]" - CS0248: Nem hozható létre negatív méretű tömb
-
CS0270: A tömb mérete nem adható meg változódeklarációban (próbálja meg inicializálni egy "
new" kifejezéssel) - CS0611: A tömbelemek nem lehetnek típusúak
- CS0623: A tömb inicializálói csak változóban vagy mező inicializálóban használhatók. Próbáljon meg helyette egy új kifejezést használni.
- CS0650: Hibás tömbdeklarátor: Felügyelt tömb deklarálásához a rangkijelölő megelőzi a változó azonosítóját. Rögzített méretű puffermező deklarálásához használja a rögzített kulcsszót a mezőtípus előtt.
- CS0719: A tömbelemek nem lehetnek statikus típusúak
- CS0747: Érvénytelen inicializáló tagdeklarátor.
- CS0820: Tömb inicializáló nem rendelhető implicit módon beírt helyihez
- CS0826: Az implicit módon beírt tömbhöz nem található a legjobb típus.
- CS0846: Beágyazott tömb inicializáló várható
- CS1063: A gyűjtemény inicializáló elemének legjobban túlterhelt Add metódusa elavult.
-
CS1552: Tömbtípus-meghatározó,
[]a paraméter neve előtt kell megjelennie - CS1586: A tömb létrehozásának tömbméretet vagy tömb inicializálót kell tartalmaznia
- CS1920: Az elem inicializálója nem lehet üres.
-
CS1921: A legjobb túlterhelt metódus-illeszkedés nem megfelelő aláírással rendelkezik az inicializáló elemhez. Az inicializálható
Addpéldánynak hozzáférhető példánymetódusnak kell lennie. - CS1925: A gyűjtemény inicializálójával nem inicializálható a "type" típusú objektum.
- CS1950: A gyűjtemény inicializálójának legjobban túlterhelt Add metódusa érvénytelen argumentumokkal rendelkezik.
-
CS1954: A gyűjtemény inicializáló elemére vonatkozó legjobban túlterhelt metódus nem használható. A gyűjtemény inicializáló '
Add' metódusai nem tartalmazhatnakrefvagyoutparamétereket. - CS9174: A típus nem inicializálható gyűjteménykonstanssal, mert a típus nem konstruálható.
- CS9176: Nincs céltípus megadva a gyűjteményliterálhoz.
- CS9185: A CollectionBuilderAttribute szerkesztőtípusnak nem általános osztálynak vagy szerkezetnek kell lennie.
- CS9186: A CollectionBuilderAttribute metódusnév érvénytelen.
-
CS9187: Nem található elérhető metódus a várt aláírással: statikus metódus egyetlen típusú
ReadOnlySpan<T>paraméterrel; és helyes visszatérési típussal - CS9188: A típusnak van egy CollectionBuilderAttribute attribútuma, de nincs elemtípusa.
- CS9203: Ebben a környezetben nem használható ilyen típusú gyűjteménykifejezés, mert az a jelenlegi hatókörön kívül is közzétehető.
- CS9210: Ez a System.Collections.Immutable.ImmutableArray<T>verzió nem használható gyűjteménykifejezésekkel.
-
CS9212: A "
.." spread operátor nem működik "type" típusú változókon, mert a "type" nem tartalmaz nyilvános példányt vagy bővítménydefiníciót a "tag" számára. - CS9213: A gyűjteménykifejezés céljának "type" elemtípusa nincs.
- CS9214: A gyűjteménykifejezés típusának argumentumok nélkül hívható konstruktorral kell rendelkeznie.
- CS9215: A gyűjtemény kifejezéstípusának "type" típusának rendelkeznie kell egy "Hozzáadás" példánnyal vagy bővítménymetódussal, amely egyetlen argumentummal hívható meg.
- CS9222: A gyűjtemény inicializálója a "type" gyűjtemény példányainak végtelen láncát eredményezi.
- CS9332: A ".." spread operátor nem használható a fogási záradék szűrőkifejezésében.
- CS9354: "with(...)" elemnek kell lennie az első elemnek
- CS9355: A "with(...)" elemek nem támogatottak a(z) 'type' típus esetében
- CS9356: A(z) "with(...)" elem argumentumai nem lehetnek dinamikusak
- CS9357: A csak olvasható interfész 'with(...)' elemének üresnek kell lennie, ha jelen van
- CS9358: A gyűjtemény elemtípusa nem lehet ref struct vagy olyan típusparaméter, amely megengedi a ref struct-okat
- CS9359: A metódus túlterhelése nem veszi figyelembe a "szám" "with(...)" elemargumentumokat
Ezenkívül a cikk a következő figyelmeztetéseket tartalmazza:
- CS1062: A gyűjtemény inicializáló elemének legjobban túlterhelt Add metódusa elavult.
- CS1064: A gyűjtemény inicializáló elemének legjobban túlterhelt Add metódusa elavult.
- CS3007: A túlterhelt metódus "metódusa", amely csak névtelen tömbtípusok szerint különbözik, nem CLS-kompatibilis
- CS3016: Az attribútumargumentumként megadott tömbök nem CLS-kompatibilisek
- CS0251: Negatív indexű tömb indexelése (a tömbindexek mindig nullánál kezdődnek)
- CS9208: A gyűjteménykifejezés váratlan halomfoglalásokat okozhat. Fontolja meg egy tömb explicit létrehozását, majd a végleges típusra való konvertálást, hogy a foglalás explicit legyen.
-
CS9209: A gyűjteménykifejezés váratlan halomfoglalásokat okozhat a "
.." spreadek használata miatt. Fontolja meg egy tömb explicit létrehozását, majd a végleges típusra való konvertálást, hogy a foglalás explicit legyen. - CS9332: A ".." spread operátor nem használható a fogási záradék szűrőkifejezésében.
Érvénytelen hozzáférés a tömbelemhez
- CS0022: Nem megfelelő számú index található a(z) []ben, a várt "szám"
- CS0251: Negatív indexű tömb indexelése (a tömbindexek mindig nullánál kezdődnek)
A tömbelemek helyes eléréséhez kövesse az alábbi indexelési szabályokat. További információ: Tömbök.
- Adja meg a deklarált dimenziókkal (CS0022) azonos számú indexet. Az egydimenziós tömböknek egy indexre van szükségük; egy háromdimenziós tömbnek három indexre van szüksége.
- Csak nem negatív egész számokat használjon tömbindexekhez (CS0251). A tömbindexek mindig nullával kezdődnek.
Érvénytelen gyűjtemény inicializáló
- CS0747: Érvénytelen inicializáló tagdeklarátor.
- CS1920: Az elem inicializálója nem lehet üres.
-
CS1921: A legjobb túlterhelt metódusegyezés nem megfelelő aláírást ad az inicializáló elemhez. Az inicializálható
Addpéldánynak akadálymentes metódusnak kell lennie. - CS1922: A "type" típus nem inicializálható gyűjtemény inicializálóval, mert a "type" nem implementálja a "System.Collections.IEnumerable" elemet.
- CS1925: A gyűjtemény inicializálójával nem inicializálható a "type" típusú objektum.
- CS1927: Figyelmeztetés: Figyelmen kívül hagyva a /win32manifest modult, mert csak szerelvényekre vonatkozik
- CS1950: A gyűjtemény inicializálójának legjobban túlterhelt Add metódusa érvénytelen argumentumokkal rendelkezik.
-
CS1954: A gyűjtemény inicializáló elemének legjobban túlterhelt metódusának illeszkedése nem használható. A gyűjtemény inicializáló '
Add' metódusai nem rendelkezhetnekrefvagyoutparaméterekkel. - CS9174: A típus nem inicializálható gyűjteménykonstanssal, mert a típus nem konstruálható.
- CS9176: A gyűjteménykonstanshoz nincs céltípus.
- CS9203: Ebben a környezetben nem használható ilyen típusú gyűjteménykifejezés, mert az a jelenlegi hatókörön kívül is közzétehető.
- CS9210: Ez a System.Collections.Immutable.ImmutableArray<T> verzió nem használható gyűjteménykifejezésekkel.
-
CS9212: A "
.." spread operátor nem működik "type" típusú változókon, mert a "type" nem tartalmaz nyilvános példányt vagy bővítménydefiníciót a "tag" számára. - CS9213: A gyűjteménykifejezés céljának "type" elemtípusa nincs.
- CS9214: A gyűjteménykifejezés típusának argumentumok nélkül hívható konstruktorral kell rendelkeznie.
- CS9215: A gyűjtemény kifejezéstípusának "type" típusának rendelkeznie kell egy "Hozzáadás" példánnyal vagy bővítménymetódussal, amely egyetlen argumentummal hívható meg.
- CS9222: A gyűjtemény inicializálása a 'típus' gyűjtemény példányosításainak végtelen láncát eredményezi.
- CS9332: A ".." spread operátor nem használható a fogási záradék szűrőkifejezésében.
- CS9354: "with(...)" elemnek kell lennie az első elemnek
- CS9355: A "with(...)" elemek nem támogatottak a 'típus' esetén
- CS9356: A(z) "with(...)" elem argumentumai nem lehetnek dinamikusak
- CS9357: Az írásvédett interfész "with(...)" elemének üresnek kell lennie, ha van jelen
- CS9358: A gyűjtemény elemtípusa nem lehet ref struct vagy olyan típusparaméter, amely megengedi a ref structokat
- CS9359: Nincs olyan 'method' függvény túlterhelés, amely 'number' 'with(...)' elemargumentumot vesz fel
A fordító a következő figyelmeztetéseket is generálhatja:
- CS1062: A gyűjtemény inicializáló elemének legjobban túlterhelt Add metódusa elavult.
- CS1063: A gyűjtemény inicializáló elemének legjobban túlterhelt Add metódusa elavult.
- CS1064: A gyűjtemény inicializáló elemének legjobban túlterhelt Add metódusa elavult.
- CS9208: A gyűjteménykifejezés váratlan halomfoglalásokat okozhat. Fontolja meg egy tömb explicit létrehozását, majd a végleges típusra való konvertálást, hogy a foglalás explicit legyen.
-
CS9209: A gyűjteménykifejezés váratlan halomfoglalásokat okozhat a "
.." spreadek használata miatt. Fontolja meg egy tömb explicit létrehozását, majd a végleges típusra való konvertálást, hogy a foglalás explicit legyen.
Érvényes gyűjtemény inicializálók létrehozásához kövesse az alábbi szabályokat. További információ: Gyűjteménykifejezések.
- Ne keverje a tulajdonság inicializálását az elembeadással ugyanabban az inicializálóban (CS0747).
- Legalább egy elemet adjon meg a gyűjtemény-inicializálókban, amelyek kapcsos zárójeleket használnak (CS1920).
- Győződjön meg arról, hogy a kollekciótípus implementálja a
IEnumerable(CS1922) kódot. - Csak gyűjteménytípusokkal (CS1925) használjon gyűjtemény inicializálókat.
- Ellenőrizze, hogy a
Addmetódus elérhető-e, az elemtípusnak megfelelő paramétert használ-e, és nem használ-erefmódosítókatout(CS1921, CS1954). - A nem egyértelmű
Addmetódusok túlterhelésének feloldása (CS1950). - Adjon meg explicit céltípust a gyűjteménykifejezésekhez, ha a fordító nem tudja kikövetkeztetni (CS9176, CS9213).
- Győződjön meg arról, hogy a gyűjtemény típusa paraméter nélküli konstruktorral (CS9174, CS9214) konstruktorokkal konstruálható.
- Ne használjon
ref structolyan típusú gyűjteménykifejezéseket, amelyek sérthetik a referencia biztonságot (CS9203). - Frissítés a gyűjteménykifejezések kompatibilis futtatókörnyezeti verziójára
ImmutableArray(CS9210). - Enumerálási minták (például
GetEnumerator) implementálása a spread operátorok támogatásához (CS9212). - Kerülje a körkörös függőségeket a gyűjtemény inicializálásában (CS9222).
- Ne használja a spread operátort a catch kifejezés szűrőiben (CS9332).
- A
with(...)elemet helyezze el először a gyűjteménykifejezésekben (CS9354). - Csak olyan típusok esetén használjon
with(...)elemeket, amelyek támogatják a gyűjteménykifejezés argumentumait (CS9355). - Ne használjon dinamikus argumentumokat az elemekben
with(...)(CS9356). - Használjon üres
with()elemet az írásvédett felülettípusokhoz (CS9357). - Ne használjon refstruktúratípusokat elemtípusként olyan gyűjteményekben, amelyek nem támogatják őket (CS9358).
- Egyeztesse az
with(...)argumentumok számát a rendelkezésre álló konstruktor-túlterhelésekkel (CS9359).
Érvénytelen tömb rangja
-
CS0178: Érvénytelen típusindex: várt "
," vagy "]" - CS0650: Hibás tömbdeklarátor: Felügyelt tömb deklarálásához a rangkijelölő megelőzi a változó azonosítóját. Rögzített méretű puffermező deklarálásához használja a rögzített kulcsszót a mezőtípus előtt.
-
CS1552: Tömbtípus-meghatározó,
[]a paraméter neve előtt kell megjelennie
A tömbök helyes deklarálásához kövesse a megfelelő szintaxisrendet. További információ: Tömbök és A C# nyelv specifikációja szakasz a tömb inicializálóiról.
A tömbdeklaráció a következő elemekből áll sorrendben:
- A tömbelemek típusa (például
int,stringvagySomeClassType). - A tömb szögletes zárójelei, opcionálisan vesszőkkel, ha több dimenzió van.
- A változó neve.
Tömbdimenziók megadásakor a következőket használhatja:
- Számos elem kapcsos zárójelben (
{és}) - Üres zárójelek
- Egy vagy több vessző szögletes zárójelben
Az alábbi példák érvényes tömbdeklarációkat mutatnak be:
int[] anArrayOfIntegers;
string[,,] threeDimensionalStringArray;
Érvénytelen tömbhossz
- CS0248: Nem hozható létre negatív méretű tömb
- CS0270: A tömb mérete nem adható meg változódeklarációban (próbálja meg inicializálni egy "új" kifejezéssel)
- CS1586: A tömb létrehozásának tömbméretet vagy tömb inicializálót kell tartalmaznia
Érvényes hosszúságú tömbök létrehozásához adja meg a méretet az inicializáláskor, ne a deklaráláskor. További információ: Tömbök.
- Adja meg a tömb hosszát az inicializálás részeként, nem deklarációként (CS0270).
- Csak pozitív egész számokat használjon tömbdimenziókhoz (CS0248).
- Adjon meg egy méretet egy
newkifejezésben vagy egy tömb inicializálójában (CS1586).
Az alábbi példa mindkét mechanizmust mutatja be:
int[] fiveIntegers = new int[5];
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
Érvénytelen elemtípus
- CS0611: A tömbelemek nem lehetnek "type" típusúak
- CS0719: A tömbelemek nem lehetnek statikus típusúak
- CS0820: Tömb inicializáló nem rendelhető implicit módon beírt helyihez
- CS0826: Nem található a legjobb típus az implicit módon beírt tömbhöz
A megfelelő elemtípusú tömbök használatához kövesse az alábbi típuskorlátozásokat. További információ: Implicit módon beírt helyi változók és a leggyakoribb típus.
- Ne használjon korlátozott típusokat, mint például System.TypedReference és System.ArgIterator, mint tömbelem-típusokat (CS0611).
- Ne használjon
staticosztályokat tömbelem-típusokként, mert a példányok nem hozhatók létre (CS0719). - Implicit módon beírt tömbök inicializálása kifejezéssel
new(CS0820). - Győződjön meg arról, hogy az implicit módon beírt tömb inicializáló minden eleme rendelkezik a legjobban elterjedt típussal (CS0826).
Az alábbi példák bemutatják, hogyan deklarálhatók implicit módon beírt tömbök:
var implicitType = new[] { 1, 2, 3 };
char c = 'c';
short s1 = 0;
short s2 = -0;
short s3 = 1;
short s4 = -1;
// common type is "int"
var commonType = new[] { s1, s2, s3, s4, c, 1 };
A leggyakoribb típus biztosítása érdekében használja az alábbi technikákat:
- Adjon explicit típust a tömbnek.
- Adja meg az összes tömbelemnek ugyanazt a típust.
- Adjon meg kifejezett típuskonverziókat azokra az elemekre, amelyek a problémát okozhatják.
Érvénytelen tömb inicializáló
- CS0623: A tömb inicializálói csak változóban vagy mező inicializálóban használhatók. Próbáljon meg helyette egy új kifejezést használni.
- CS0846: Beágyazott tömb inicializáló várható
- CS1925: A gyűjtemény inicializálójával nem inicializálható a "type" típusú objektum.
Ezek a hibák érvénytelen tömb inicializáló szintaxist jeleznek. További információ: Tömbök.
Érvényes tömb inicializálók létrehozása:
- Tömb inicializálóit csak változó- vagy meződeklarációkban (CS0623) használja.
newKifejezés használata más környezetekben. - Kapcsos zárójelek (
{és}) illesztése elemek vagy gyermektömbök körül (CS0846). - Győződjön meg arról, hogy az inicializálási kifejezés megegyezik a szaggatott tömb inicializálásában lévő tömbök számával.
- A gyűjtemény inicializálóit csak gyűjteménytípusokkal használja, ne pedig tömbökkel vagy más típusokkal (CS1925).
Érvénytelen gyűjtemény-építő
- CS9175: A kifejezésfa nem tartalmazhat gyűjteménykifejezést.
- CS9177: A "CollectionBuilderAttribute" építő metódus visszatérési típusának meg kell egyeznie a "betterness" kifejezésben használt gyűjteménytípussal.
- CS9178: A természetes "típus" típushoz nincs céltípus.
- CS9179: A gyűjteménykifejezés típusának argumentumok nélkül hívható konstruktorral kell rendelkeznie.
- CS9180: A "CollectionBuilderAttribute" builder metódusnak statikus metódusnak kell lennie.
- CS9181: A "CollectionBuilderAttribute" szerkesztőmetódus paramétertípusának meg kell egyeznie a "ReadOnlySpan<{0}>" paramétersel
- CS9182: Érvénytelen "CollectionBuilderAttribute". A szerkesztőtípuson{0} nem található egyező "{1}" metódus.
- CS9183: A "CollectionBuilderAttribute" metódus visszatérési típusának nem absztrakt, nem interfész típusúnak kell lennie, amely "típusként" használható
- CS9185: Statikus típus nem használható típusargumentumként.
-
CS9186: A
CollectionBuilderAttributemetódus neve érvénytelen. - CS9187: Nem található elérhető "Létrehozás" metódus a várt aláírással: egy statikus metódus, amelynek egyetlen paramétere "ReadOnlySpan<{0}>", és ""{1} típusú visszatérési típust ad vissza.
- CS9188: A "scoped" nem használható módosítóként a gyűjteménykifejezés-típusparaméteren.
- CS9190: A "CollectionBuilderAttribute" metódus "builderMethod" nem alkalmazható, mert általános.
- CS9192: Beágyazott tömbkonvertálások nem használhatók gyűjteménykifejezésekkel.
- CS9193: Az "argumentum" argumentum nem adható át a "ref" kulcsszóval.
- CS9194: A(z) 'argumentum' paraméter nem adható át az 'out' kulcsszóval
- CS9195: Az 'argument' nem adható át az 'in' kulcsszóval
- CS9196: A "gyűjteménykifejezés" funkció nem érhető el a C# verzióban. Használja a "requiredVersion" vagy újabb nyelvi verziót.
- CS9197: A "beágyazott tömbök" funkció nem érhető el a C# verzióban. Használja a "requiredVersion" vagy újabb nyelvi verziót.
- CS9198: A 'ref' és 'unsafe' használata aszinkron és iterátoros metódusokban nem érhető el a C# 'version' verzióban. Használja a 'requiredVersion' vagy újabb nyelvi verziót.
- CS9199: A "gyűjteménykifejezés" funkció nem érhető el a C# verzióban. Használja a "requiredVersion" vagy újabb nyelvi verziót.
- CS9202: A "ref readonly parameters" funkció nem érhető el a C# verzióban. Használja a "requiredVersion" vagy újabb nyelvi verziót.
- CS9208: A "nameof" operátor nem használható beágyazott tömbhozzáférésen.
- CS9209: A "tulajdonság" ref-returning tulajdonság nem használható értékargumentumként.
- CS9211: A kifejezésnek "type" típusúnak kell lennie, mert hivatkozás alapján van hozzárendelve
- CS9212: Nem használható gyűjteménykifejezés egy rögzített utasítás értékeként
- CS9217: A "ref" helyi változó nem őrizhető meg az "await" vagy "yield" határvonalán.
- CS9218: A "paramName" egy refstruktúra, és nem lehet egy paraméter típusa
- CS9221: A 'type' típus nem lehet ref struct vagy olyan típusparaméter, amely lehetővé teszi ref struktúrák használatát, ha azt 'parameter' paraméterként szeretné használni az általános típusban vagy a 'member' metódusban
- CS9223: A gyűjteménykifejezésekben nem használhatók "ref" mezőket tartalmazó szerkezetek.
- CS9228: Ref struktúra nem változóként való deklarálása nem engedélyezett
- CS9232: A részleges metódusdeklarációk aláírási eltérésekkel rendelkeznek.
- CS9233: A "fájl" módosító csak a fordítási egység legfelső szintjén definiált típusok esetén használható
Ha helyesen szeretne gyűjteményszerkesztő attribútumokkal rendelkező gyűjteménykifejezéseket létrehozni, kövesse az alábbi követelményeket. További információ: Gyűjteménykifejezések.
- Győződjön meg arról, hogy a céltípus rendelkezik olyan iterációs típussal, amely támogatja
foreacha (CS9188) használatát. - Ne használjon általános típusokat gyűjteményszerkesztő-típusokként (CS9185).
- Ellenőrizze, hogy a megadott
CollectionBuilderAttributemetódusnév érvényes-e (CS9186). - Csak a szükséges aláírásnak megfelelő statikus metódusokkal alkalmazza
CollectionBuilderAttribute: adja vissza a gyűjtemény típusát, és vegyen fel egyReadOnlySpan<T>olyan paramétert, amelyTmegfelel az elemtípusnak (CS9180, CS9181, CS9182, CS9183, CS9187, CS9190). - Győződjön meg arról, hogy a visszatérési típus megegyezik, és nem absztrakt vagy interfész (CS9177, CS9183).
- Ne használjon ref szerkezeteket vagy ref mezőkkel rendelkező típusokat gyűjteménykifejezésekben (CS9218, CS9221, CS9223, CS9228).
- Kerülje a gyűjteménykifejezések használatát a kifejezésfákban (CS9175).
- A gyűjteménykifejezésekhez és a kapcsolódó funkciókhoz (CS9196, CS9197, CS9198, CS9199, CS9202) használja a megfelelő nyelvi verziót.
Gyakori nyelvi specifikációs figyelmeztetések
- CS3007: A túlterhelt metódus "metódusa", amely csak névtelen tömbtípusok szerint különbözik, nem CLS-kompatibilis
- CS3016: Az attribútumargumentumként megadott tömbök nem CLS-kompatibilisek
A CLS-kompatibilis kód tömbökkel való írásához kövesse az alábbi irányelveket. További információkért lásd a nyelv függetlenségét.
- Ne hozzon létre túlterhelt metódusokat, amelyek csak a tömbelemtípusokban (CS3007) különböznek.
- Ne használjon tömböket attribútumargumentumként (CS3016).
A CS3007 akkor fordul elő, ha rendelkezik egy túlterhelt metódussal, amely szaggatott tömböt fogad, és a metódusdefiníciók között az egyetlen különbség a tömb elemeinek típusa. A hiba elkerülése érdekében érdemes lehet téglalap alakú tömböt használni a szaggatott tömb helyett, vagy ha a CLS-megfelelőségre nincs szükség, távolítsa el az CLSCompliantAttribute attribútumot. A CLS-megfelelőségről további információt a nyelvfüggetlenséggel és a nyelvfüggetlen összetevőkkel kapcsolatban talál.
A CS3016 azt jelzi, hogy egy tömb attribútumnak való átadása nem felel meg a Common Language Specification (CLS) követelményeinek. A CLS-megfelelőségről további információt a nyelvi függetlenség és a nyelvfüggetlen összetevők című témakörben talál.