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 C#-fordító hibát és figyelmeztetést generál, ha helytelen szintaxissal deklarálja a sztringkonstansokat, vagy nem támogatott környezetekben használja őket. Ezek a diagnosztikák segítenek azonosítani az alapszintű sztringkonstansokkal, karakterkonstansokkal, nyers sztringkonstansokkal és UTF-8 sztringkonstansokkal kapcsolatos problémákat.
- CS1009: Ismeretlen menekülési sorozat.
- CS1010: Új sor a konstansban.
- CS1011: Üres karakterérték.
- CS1012: Túl sok karakter karakterkonstansban.
- CS1039: Meghatározatlan sztringkonstans.
- CS8996: A nyers sztringkonstansok nem engedélyezettek az előfeldolgozási irányelvekben.
- CS8997: Nem pontosított nyers sztringkonstans.
- CS8998: Nincs elég kezdő idézőjel ehhez a nyers karakterlánchoz.
- CS8999: A vonal nem a nyers sztringkonstans záróvonalával megegyező üres térrel kezdődik.
- CS9000: A nyers sztringkonstans-elválasztónak a saját sorában kell lennie.
- CS9001: A többsoros nyers szöveges literálok csak szó szerinti interpolált szövegekben engedélyezettek.
- CS9002: A többsoros nyers sztringkonstansoknak legalább egy tartalomsort kell tartalmazniuk.
- CS9003: A vonal a várttól eltérő térközt tartalmaz.
- CS9004: Nincs azonban elég idézőjel a nyers karakterlánchoz.
- CS9005: Nincs elég zárójel az interpolált nyers szöveghez.
- CS9006: Túl sok nyitó zárójel van az interpolált nyers sztring literálhoz.
- CS9007: Túl sok zárókapocs az interpolált nyers szövegkonstanshoz.
- CS9008: A(z) "@" karakterek sorozata nem engedélyezett.
- CS9009: A sztringnek idézőjellel kell kezdődnie.
- CS9026: A bemeneti sztring nem konvertálható egyenértékű UTF-8 bájtos ábrázolássá.
- CS9047: Az operátor nem alkalmazható olyan operandusokra, amelyek nem UTF-8 bájtos reprezentációk.
- CS9274: Ez a sztringkonstans nem bocsátható ki az adatszakaszba, mert XXHash128 ütközik egy másik sztringkonstanssal.
- CS9315: A program által használt felhasználói sztringek együttes hossza meghaladja a megengedett korlátot. Sztringkonstans hozzáadásához újra kell indítani az alkalmazást.
Helytelenül formázott sztringkonstansok
- CS1009 - Ismeretlen menekülési sorozat.
- CS1010 - Új vonal állandóban.
- CS1011 - Üres karakterkonstans.
- CS1012 - Túl sok karakter a karakterkonstansban.
- CS1039 - Nem pontosított sztringkonstans.
A hibák kijavításához alkalmazza a következő technikákat:
- Használja a C# nyelvspecifikációban definiált standard feloldósorozatok egyikét, például
\n(új vonal),\t(tabulátor),\\(fordított perjel) vagy\"(dupla idézőjel) (CS1009). A fordító nem ismeri fel a nyelvi specifikációban nem szereplő feloldóütemezéseket, ezért a nem definiált feloldóütemezések használata ezt a hibát okozza, mert a fordító nem tudja meghatározni, hogy milyen karaktert szeretne képviselni. - Adja hozzá a záró idézőjelet a sztringkonstans (CS1039) befejezéséhez. A sztringkonstansoknak nyitó és záró elválasztójelet is tartalmazniuk kell, ezért egy nem meghatározott sztring miatt a fordító a sztringtartalom részeként kezeli a következő forráskódot, ami elemzési hibákhoz vezet.
- Adjon hozzá pontosan egy karaktert a karakterkonstansban szereplő idézőjelek közé (CS1011, CS1012). A karakterkonstansok egyetlen karakterértéket jelölnek, és pontosan egy karaktert vagy érvényes feloldósorozatot kell tartalmazniuk, ezért az üres karakterkonstansok vagy a több karaktert tartalmazók sértik a
chartípus nyelvi szabályait. - Több forrássorra kiterjedő szövegkonstansok felosztása úgy, hogy az egyes sorokat záró idézőjellel lezárja, majd a következő sort nyitó idézőjellel kezdje, és az
+operátorral összefűzze őket (CS1010). A reguláris sztringkonstansok nem tartalmazhatnak tényleges újsoros karaktereket, mert a záró idézőjelnek ugyanazon a sorban kell megjelennie, mint a nyitó idézőjel, de többsoros sztringeket összefűzéssel vagy szó szerinti sztringek vagy nyers sztringkonstansok használatával érhet el, amelyek lehetővé teszik a beágyazott új vonalakat a sztringtartalom részeként.
További információ: stringek.
Helytelenül formázott nyers sztringkonstansok
- CS8996 - A nyers sztringkonstansok nem engedélyezettek az előfeldolgozási irányelvekben.
- CS8997 - Befejezetlen nyers sztringliterál.
- CS8998 - Nincs elég kezdő idézőjel ehhez a nyers sztring tartalomhoz.
- CS8999 - A sor nem ugyanazzal a szóközzel kezdődik, mint a nyers sztring literál záró sora.
- CS9000 - A nyers sztringkonstans-elválasztónak a saját sorában kell lennie.
- CS9001 - A többsoros nyers sztring literálok csak szó szerinti interpolált sztringekben engedélyezettek.
- CS9002 - A többsoros nyers sztringkonstansoknak legalább egy tartalomsort tartalmazniuk kell.
- CS9003 - A vonal a várttól eltérő térközt tartalmaz.
- CS9004 - Nem megfelelő idézőjelek száma a nyers szöveges kifejezéshez.
- CS9005 - Nincs elég bezáró zárójel az interpolált nyers sztring literálhoz.
- CS9006 - Túl sok nyitó kapcsos zárójel az interpolált nyers szöveges literálhoz.
- CS9007 - Túl sok zárókapcs van az interpolált nyers sztring literálnál.
- CS9008 - Az '@' karakterek ismétlése nem engedélyezett.
- CS9009 - A sztringnek idézőjellel kell kezdődnie.
A hibák kijavításához alkalmazza a következő technikákat:
- Használjon reguláris sztringkonstansokat vagy szó szerinti sztringkonstansokat nyers sztringkonstansok helyett az olyan előfeldolgozási irányelvekben, mint a
#if,#definevagy#pragma(CS8996). Az előfeldolgozási irányelvek kiértékelése az előfeldolgozási fázisban történik a lexikális elemzés előtt, így a fordító nem ismeri fel a nyers szöveges literál szintaxist ezekben a kontextusokban, mert a későbbi lexikális elemzési fázisban a nyers szöveges literál azonosítható. - A nyers sztringkonstans (CS8997, CS9004) befejezéséhez adjon hozzá egy záró elválasztójelet, amely megfelel a nyitó elválasztónak. A nyers sztring literális szintaxisa megköveteli, hogy a nyitó és záró elválasztójelek azonos számú egymást követő dupla idézőjelet (legalább három) tartalmazzanak, így a hiányzó vagy nem egyező záró elválasztó megakadályozza, hogy a fordító meghatározza, hol végződik a sztring tartalma.
- Helyezze a többsoros nyers sztringkonstansok nyitó és záró elválasztóit külön sorokra, és ne legyen más tartalom ezeken a sorokon (CS9000). A többsoros nyers sztringformátum szabályai megkövetelik, hogy a határolók dedikált vonalakat foglaljanak el a sztringtartalom egyértelmű határainak megállapításához, valamint hogy lehetővé tegyék a whitespace trimming viselkedését, amely eltávolítja a gyakori kezdő behúzást az összes tartalomvonalról.
- Adjon hozzá legalább egy sornyi tartalmat a többsoros nyers szövegkonstans (CS9002) nyitó és záró elválasztói közé. A nyelvi specifikáció megköveteli, hogy a többsoros nyers sztringek tényleges tartalmat tartalmazzanak, mivel az üres többsoros nyers sztringek nem szolgálnak célként, és valószínűleg hiányos kódot jeleznek, míg az egysoros nyers sztringek (amelyek elválasztói ugyanazon a sorban vannak) üresek lehetnek, és az üres sztringértékek megfelelő szintaxisa.
- Állítsa be nyers szövegsztring tartalom sorainak behúzását úgy, hogy az megegyezzen vagy meghaladja a záró elválasztó sor (CS8999, CS9003) behúzását. A nyers sztringkonstansok fehérhely kezelés szabályai a záró elválasztó előtti szóközt használják alapként az összes tartalomvonal közös behúzása elvágása céljából, így azok a tartalomvonalak, amelyeknél a behúzás kisebb a záró elválasztónál, megsértik a vágás algoritmusát, és helytelen formázást jeleznek.
- Növelje a dupla idézőjelek számát a nyers sztringelválasztóban, hogy meghaladja a tartalomban található idézőjelek egymást követő sorozatát (CS8998). A határolónak több egymást követő idézőjelet kell tartalmaznia, mint a sztringtartalom bármely sorozata, így a fordító egyértelműen megkülönböztetheti a tartalom részét képező idézőjeleket és a sztring végét jelző elválasztó sorozatot.
- Az interpolált nyers sztringkonstansok esetében győződjön meg arról, hogy az indításkor a dollárjelek (
$) száma megegyezik a konstans tartalomként szükséges egymást követő nyitó vagy záró zárójelek számával (CS9005, CS9006, CS9007). Az interpolált nyers sztring szintaxisa a dollárjelek számával határozza meg a kapcsos zárójelek escape szekvenciájának hosszát, így$$"""interpolációs helyeket igényel{{, és lehetővé teszi, hogy egyetlen{karakterek szerepeljenek tartalomként, miközben az eltérő kapcsos zárójelsorozatok vagy helytelen interpolációs szintaxist vagy olyan tartalmat jeleznek, amelyhez más dollárjel számra van szükség. - Távolítsa el az előtagot a
@nyers sztring literálból, és csak az idézőjel határolót használja (CS9008, CS9009). A nyers sztringkonstansok a C# 11-ben bevezetett különálló szintaxisok, amelyek nem használják a@szó szerinti karakterlánc előtagját, és a nyelvi specifikáció nem teszi lehetővé a szó szerinti szintaxis és a nyers sztringelválasztók kombinálását@, mivel a nyers sztringek már támogatják a többsoros tartalmat, és nem igényelnek feloldósorozatokat.
Megjegyzés:
A CS9001 már nem a C# jelenlegi verzióiban készül. A többsoros nyers sztringkonstansok mostantól szó szerinti formázás nélkül támogatják az interpolációt.
További információ: nyers sztringkonstansok.
UTF-8 szöveg literálok
- CS9026 - A bemeneti sztring nem konvertálható egyenértékű UTF-8 bájtos ábrázolássá.
- CS9047 - Az operátor nem alkalmazható olyan operandusokra, amelyek nem UTF-8 bájtos reprezentációk.
A hibák kijavításához alkalmazza a következő technikákat:
- Távolítsa el azokat a karaktereket vagy feloldósorozatokat, amelyek nem kódolhatók UTF-8-ban a
u8karaktersor-konstansból (CS9026). Az UTF-8 kódolási specifikáció támogatja a teljes Unicode-karakterkészletet, de érvényes Unicode skaláris értékeket igényel, ezért a helyettesítő kódpontok (az U+D800 és U+DFFF tartomány értékei) nem jelennek meg közvetlenül az UTF-8 sztringekben, mert az UTF-16 helyettesítő pár kódolásához vannak fenntartva, és nem önálló karaktereket jelölnek, és az UTF-8-ként való kódolásuk érvénytelen bájtsort eredményezne. - Az UTF-8 sztringek összefűzésekor (CS9047) győződjön meg arról, hogy az összeadási operátor mindkét operandusa UTF-8 sztring literál (a
u8utótaggal jelölve). A fordító speciális támogatást nyújt az UTF-8 sztringkonstansok fordításkor történő összefűzéséhez, amely az összefűzött UTF-8 bájtsorozatokat képviselő értékeket állít előReadOnlySpan<byte>, de az UTF-8 sztringek normálstringértékekkel vagy más típusokkal való keverése nem támogatott, mert a típusrendszer nem tudja meghatározni, hogy bájttartományt vagy szöveges sztringet állít-e elő, és az alapul szolgáló ábrázolások (UTF-8 bájt és UTF-16 karakter) alapvetően nem kompatibilisek.
További információ: UTF-8 literálok.
Adatszakaszok szöveges karakterláncai
- CS9274: Ez a szöveges literál nem kiadható az adatszakaszba, mert XXHash128 ütközés keletkezett egy másik szöveges literállal.
- CS9315: A program által használt felhasználói sztringek együttes hossza meghaladja a megengedett korlátot. Sztringkonstans hozzáadásához újra kell indítani az alkalmazást.
A problémák megoldásához próbálkozzon a következő technikákkal:
- Tiltsa le az alkalmazás kísérleti adatszekció karakterlánc-literál funkciót kivonatütközés (CS9274) esetén. Ez a hiba azt jelzi, hogy két különböző sztringkonstans ugyanazt az XXHash128 értéket hozta létre, ami megakadályozza, hogy az optimalizálás megfelelően működjön, ezért el kell távolítania a kísérleti viselkedést lehetővé tevő funkciójelzőt.
- Indítsa újra az alkalmazást, miután módosította a sztringkonstansokat hibakeresési munkamenet során, amikor az adatszakasz-funkció engedélyezve van (CS9315). A gyakori elérésű újratöltési infrastruktúra nem tudja frissíteni az adatszakaszban tárolt sztringkonstansokat, mert olyan speciális formátumban vannak beágyazva, amely futásidőben nem módosítható, így a régi sztringértékekkel végzett végrehajtás helytelen viselkedést eredményezne.