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
CS1921: A legjobb túlterhelt metódusegyezés nem megfelelő aláírást ad az inicializáló elemhez. Az inicializálható Add példánynak akadálymentes metó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ének legjobban túlterhelt metódusa nem használható. A gyűjtemény inicializálójánakAdd metódusai nem rendelkeznek ref vagy out paraméterekkel.
CS9174: A típus nem inicializálható gyűjteménykonstanssal, mert a típus nem konstruálható.
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ípus collectionBuilderAttribute típusú, elemtípus nélkül.
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ő.
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.
A tömbökről, gyűjtemény inicializálókról és gyűjteménykifejezésekről az alábbi cikkekben talál további információt:
A következő hibák azt jelzik, hogy a gyűjtemény inicializálójának fordítója által létrehozott kód érvénytelen:
CS0747: Érvénytelen inicializáló tagdeklarátor.
CS1063: A gyűjtemény inicializáló elemének legjobban túlterhelt Add metódusa elavult.
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ó Add példánynak akadálymentes metódusnak kell lennie.
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ódusa nem használható. A gyűjtemény inicializálójánakAdd metódusai nem rendelkeznek ref vagy out paramé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ő.
A fordító a következő figyelmeztetést is generálhatja:
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.
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.
A hibák mindegyike azt jelzi, hogy a gyűjtemény inicializálójának fordítója által létrehozott kód érvénytelen. Ellenőrizze a következőt:
A gyűjtemény inicializálója elemek sorozatát tartalmazza. A gyűjteménypéldány beállítási tulajdonságait nem keverheti össze az ugyanabban az inicializálóban lévő elemek hozzáadásával.
A kapcsos zárójeleket ({ és }) tartalmazó gyűjtemény inicializálója nem lehet üres.
Az osztálynak implementálnia kell az IEnumerable-t, és nyilvános Add metódussal kell rendelkeznie.
A megfelelő Add metódusnak elérhetőnek kell lennie, és egy olyan paramétert kell használnia, amely megegyezik a gyűjtemény elemeivel. A paraméter nem tartalmazhatja a módosító vagy out a ref módosító paramétert.
A túlterhelés feloldásának egy Add módszert kell választania jobb egyezésként. Nem lehet több olyan egyező metódus, amely egyformán jó.
A gyűjteménykifejezések inicializálhatják a gyűjteménytípus explicit módon beírt változóit. Ha a változó nem gyűjtemény- vagy tömbtípus, vagy implicit módon van begépelve (használatával var), akkor a gyűjtemény inicializálója nem használható.
A ref struct hasonló System.Span<T> típusok nem inicializálhatók olyan gyűjteménykifejezéssel, amely sértheti a ref biztonságát.
A gyűjteménykifejezések nem tudják megfelelően inicializálni az System.Collections.Immutable.ImmutableArray<T> aktuális verziót. Használja a futtatókörnyezet egy másik verzióját, vagy módosítsa az inicializálási kifejezést.
A figyelmeztetések azt jelzik, hogy a gyűjteménykifejezés, beleértve az oldalpárokat is, memóriát foglalhat le. A különböző tárolók létrehozása és konvertálása hatékonyabb lehet.
É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 azt jelzik, hogy érvénytelen inicializálót hozott létre. A valószínű ok a kiegyensúlyozatlan kapcsos zárójelek { és } egy vagy több elem vagy gyermektömb körül. 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, és hogy a kapcsos zárójelek kiegyensúlyozottak.
Érvénytelen tömbelem-hozzáférés
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ömb egy eleméhez úgy férhet hozzá, hogy megadja a tömbben deklarált egyes tengelyek indexét. Az indexek a tömb neve között [ és ] után vannak. A tömbindexekre két szabály van:
Meg kell adnia a tömbdeklarációban használt indexek számát. Ha a tömb egy dimenzióval rendelkezik, egy indexet kell megadnia. Ha a tömb három dimenzióval rendelkezik, három indexet kell megadnia.
Minden indexnek nem negatív egész számnak kell lennie.
Érvénytelen tömb rangja
CS0178: Érvénytelen rangsoroló: 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ömbdeklarációk a következő jogkivonatokból állnak, sorrendben:
A tömbelemek típusa. Például, intvagy stringSomeClassType.
A tömb szögletes zárójelei, opcionálisan vesszőkkel, amelyek több dimenziót jelölnek.
A változó neve.
Ha egy tömb inicializálása megadja a tömbdimenziókat, a következő tulajdonságokat adhatja meg:
További információ: A tömb inicializálóinak C# specifikációja (C# nyelvi specifikáció) szakasza.
É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
A tömb minden dimenziójának hosszát a tömb inicializálásának részeként kell megadni, nem annak deklarációjaként. Az egyes dimenziók hosszának pozitívnak kell lennie. Megadhatja a hosszt egy new kifejezéssel a tömb lefoglalásához, vagy egy tömb inicializáló használatával az összes elem hozzárendeléséhez. Az alábbi példa mindkét mechanizmust mutatja be:
CS0719: A tömbelemek nem lehetnek statikus típusúak
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.
Vannak olyan típusok, amelyek nem használhatók tömbtípusként. Ezek a típusok a következők: System.TypedReference és System.ArgIterator. A tömb típusa nem lehet static osztály, mert az osztálypéldányok nem hozhatók static létre.
Tömböket implicit módon beírt helyi változókként deklarálhat. A tömböt egy new kifejezéssel kell inicializálni. Emellett a tömb inicializáló minden elemének a legjobban elterjedt típussal kell rendelkeznie. Az alábbi példák bemutatják, hogyan deklarálhatók implicit módon beírt tömbök:
C#
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ípust az alábbi technikák bármelyikével biztosíthatja:
Adjon explicit típust a tömbnek.
Adja meg az összes tömbelemnek ugyanazt a típust.
Adjon explicit szereplőket azokra az elemekre, amelyek okozhatják a problémát.
Érvénytelen gyűjteményszerkesztő
A következő hibák a gyűjteményszerkesztő típusának hibáit jelzik:
CS9185: A CollectionBuilderAttribute szerkesztőtípusnak nem általános osztálynak vagy szerkezetnek kell lennie.
CS9186: A CollectionBuilderAttribute metódus neve é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 elemtípusa CollectionBuilderAttribute , de nincs elemtípusa.
Ezek a hibák azt jelzik, hogy a gyűjteményszerkesztő típusát módosítani kell. Jegyezze meg a következő szabályokat:
A gyűjteménytípusnak iterációs típussal kell rendelkeznie. Más szóval a típus gyűjteményként is használható foreach .
A gyűjteményszerkesztő típusa nem lehet általános típus.
A gyűjteménykészítő metódusnak akadálymentes statikus metódusnak kell lennie. Vissza kell adnia a gyűjtemény típusát, és meg kell adnia egy olyan paramétert ReadOnlySpan<T> , amely T megfelel a gyűjtemény elemtípusának.
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 CS3007 akkor fordul elő, ha túlterhelt metódussal rendelkezik, amely egy szaggatott tömböt használ, és a metódusaadékok között az egyetlen különbség a tömb elemtí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 a common language specification (CLS) nem felel meg a tömb attribútumnak való átadásához. 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.
Dolgozzon együtt velünk a GitHubon
A tartalom forrása a GitHubon található, ahol létrehozhat és áttekinthet problémákat és lekéréses kérelmeket is. További információért tekintse meg a közreműködői útmutatónkat.
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást: