Megosztás:


Nyers sztringkonstansszöveg – """ sztringkonstansokban

A nyers sztringkonstans legalább három dupla idézőjel (") karakterrel kezdődik és végződik:

var singleLine = """This is a "raw string literal". It can contain characters like \, ' and ".""";

A nyers sztringkonstansok több sorra is kiterjedhetnek:

var xml = """
        <element attr="content">
            <body>
            </body>
        </element>
        """;

A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.

A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.

Jótanács

Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.

A többsoros nyers sztringkonstans értelmezését a következő szabályok szabályozzák:

  • A nyitó idézőjeleknek a soruk utolsó nem üres karaktereknek kell lenniük, a záró idézőjeleknek pedig az első nem üres karaktereknek kell lenniük a sorban.
  • A záró idézőjelek bal oldalán lévő üres tér a nyers sztringkonstans összes sorából törlődik.
  • Az ugyanazon a sorban lévő nyitó idézőjeleket követő szóközök figyelmen kívül lesznek hagyva.
  • A nyitó idézőjelet követő üres térvonalak a sztringkonstans részét képezik.
  • A záró idézőjelek előtti új vonal nem szerepel a literális sztringben.
  • Ha a térköz megelőzi ugyanazon a sorban a véghatárolást, a térköz pontos számának és típusának (például szóközök és lapok) az egyes tartalomsorok elején kell léteznie. A szóköz nem felel meg a vízszintes lapnak, és fordítva.

Az utolsó szabály egyszerű, ha konzisztens abban, hogy miként használja a lapokat (U+0009) vagy szóközöket (U+0020) a kód behúzásához, beleértve a nyers sztringkonstansokat is. Használhatja őket, de nem keverheti őket ugyanabban a többsoros nyers sztringkonstansban. A következő deklarációk például jogi jellegűek (a szóközt szóköz karakterként \b és \t tabulátor karakterként rajzolja meg:)

// Using `\b` and `\t` to visual the actual whitespace characters
var xml = """
\b\b\b\b<element attr="content">
\b\b\b\b\b\b<body>
\b\b\b\b\b\b</body>
\b\b\b\b</element>
\b\b\b\b""";

// Using `\b` and `\t` to visual the actual whitespace characters
var xmlTabs = """
\t\t\t\t<element attr="content">
\t\t\t\t\t\t<body>
\t\t\t\t\t\t</body>
\t\t\t\t</element>
\t\t\t\t""";

Mivel azonban a következő deklaráció nem egységes formátumot használ a zárótól """balra lévő üres térhez, a deklaráció érvénytelen:

// Using `\b` and `\t` to visual the actual whitespace characters
var xml = """
\t\b\b\b<element attr="content">
\b\t\b\b\b\b<body>
\b\b\t\b\b\b</body>
\b\b\b\t</element>
\b\b\b\b""";

Jótanács

A Visual Studio és a C#Dev Kit érvényesítési és szintaxiskiemelést biztosít, ha a nyers sztringkonstansok JSON-adatokat vagy reguláris kifejezéseket tartalmaznak.

Az eszközök elemzik a szöveget. Ha az eszközök biztosak abban, hogy a szöveg JSON-t vagy reguláris kifejezést jelöl, a szerkesztő szintaxisszínezést biztosít.

Ezt a felhasználói élményt úgy javíthatja, ha a formátumot jelző deklaráció fölé fűz egy megjegyzést:

  • // lang=json A nyers sztringkonstans JSON-adatokat jelöl.
  • // lang=regex azt jelzi, hogy a nyers sztringkonstans egy reguláris kifejezést jelöl.

Amikor egy nyers sztringkonstanst használ argumentumként, amelyben a paraméter a formátum jelzésére szolgál System.Diagnostics.CodeAnalysis.StringSyntaxAttribute , ezek az eszközök bizonyos formátumtípusok esetében ellenőrzik a nyers sztring literálját. A JSON és a regex is támogatott.

Bizonyos formátumok esetében a megjegyzés vagy az attribútum lehetővé teszi a kódjavaslatok által a formátumon alapuló sztringkonstansok javítását.

Előfordulhat, hogy létre kell hoznia egy nyers sztringkonstanst, amely három vagy több egymást követő dupla idézőjelet tartalmaz. A nyers sztringkonstansok legalább három dupla idézőjelből álló sorozattal kezdődhetnek és végződhetnek. Ha a sztringkonstans három egymást követő dupla idézőjelet tartalmaz, a nyers sztringkonstans négy dupla idézőjellel kezdődik és végződik:

var moreQuotes = """" As you can see,"""Raw string literals""" can start and end with more than three double-quotes when needed."""";

Ha idézőjelekkel kell kezdenie vagy befejeznie egy nyers sztringkonstanst, használja a többsoros formátumot:

var MultiLineQuotes = """"
               """Raw string literals""" can start and end with more than three double-quotes when needed.
               """";

A nyers sztringkonstansok interpolált sztringekkel is kombinálhatók a {} kimeneti sztringbe való beágyazásához. Az interpolált nyers sztringkonstansban több $ karaktert is használhat a kimeneti sztringbe való beágyazáshoz { és } a karakterek beágyazásához anélkül, hogy elszabadulna.

A nyers sztringkonstans tartalma nem tartalmazhat olyan összefüggő " karaktereket, amelyek hossza egyenlő vagy nagyobb, mint a nyers sztringkonstans elválasztó hossza. A sztringek """" """ """"""""""" """""" """"" """" """ """"""" például jól formázottak. A sztringek """ """ """""" """" """ azonban nem jól formázottak.

Lásd még