Ich habe die folgende Zeichenfolge, die nicht kompiliert wird:
%Vor%Die beleidigenden Abschnitte sind:
%Vor%und
%Vor%Der Compiler wird in der Escape-Sequenz durcheinander gebracht. Kann jemand sehen, was falsch ist?
Das Problem besteht darin, dass nicht alle Zeichenketten, die Sie verketten, verbatim Zeichenkettenliterale sind, sondern nur der erste Teil der Verkettung.
Mit anderen Worten
%Vor%ist das einzige wort Literal in der gesamten Anweisung, um die letzte Zeichenfolge zu erstellen.
Sie müssten @ vor den Rest Ihrer Strings einfügen, um sie alle wörtlich zu machen.
Wie würde es aussehen:
%Vor%Um Ihre Titelfrage anzusprechen ...
Verwenden Sie die quote-escape-Sequenz ""
(das sind zwei Anführungszeichen)
Siehe MSDN für weitere Details zum Escaping usw.
Beachten Sie, dass in Ihrem geposteten Code die einzige wörtliche Zeichenfolge die erste ist (mit dem @
davor). Die nachfolgenden Strings sind nicht wortgetreu, also wäre die richtige Escapesequenz \"
.
Sie können es mit string.Format
:
Sie möchten \"
verwenden, um Anführungszeichen zu umgehen, nicht ""
.
So:
%Vor%Bearbeiten:
Weitere Erklärung:
Sie haben nur @
auf der ersten aller Zeichenfolgen, die Sie verketten. In Literalstrings (mit einem @
davor) können Sie Anführungszeichen mit einem doppelten Anführungszeichen umgehen. In normalen Strings ist es ein Schrägstrich-Zitat.
ZB
%Vor%Warum zitieren Sie die wörtlichen Namen der Spalten, die mir unnötig erscheinen?
"SELECT value1," + Tabellenname + "," + Spaltenname + "FROM lkpLookups WHERE Tabelle = '" + Tabellenname + "' und Feld = '" = Spaltenname + "';";
Nicht getestet, aber ich denke, Sie werden die Idee bekommen.
Tags und Links string c# escaping verbatim-string