12

印刷する必要があります

a
"b"
c

vebatim文字列を使用して、ここで複数行のコードテンプレートについて別の質問をしました。

私は次のように逐語的な文字列で試しました:

using System;

class DoFile {

    static void Main(string[] args) {
        string templateString = @"
        {0}
        \\"{1}\\"
        {2}
        ";
        Console.WriteLine(templateString, "a", "b", "c");
    }
}

しかし、私はこのエラーを受け取りました。

t.cs(8,11): error CS1525: Unexpected symbol `{'
t.cs(9,0): error CS1010: Newline in constant
t.cs(10,0): error CS1010: Newline in constant

\"{1}\"どちらも機能しません。

どうしたの?

4

7 に答える 7

21

これを試してください(エスケープするには"の代わりに" ")

string templateString = @"
        {0}
        ""{1}""
        {2}
        ";

C#仕様から:http://msdn.microsoft.com/en-us/library/Aa691090

引用-エスケープシーケンス: ""

于 2011-05-13T18:49:41.453 に答える
8

逐語的な文字列リテラルでは""、二重引用符文字に使用します。

string line = @"
{0}
""{1}""
{2}";
于 2011-05-13T18:48:33.233 に答える
4

を使用して C# で複数行の文字列リテラルを使用する場合@"、二重引用符の正しいエスケープ シーケンスは""ではなく になり\"ます。

    string templateString = @"
    {0}
    ""{1}""
    {2}
    ";
于 2011-05-13T18:48:31.520 に答える
1

文字列では@"、埋め込まれた二重引用符は、""ではなく、としてエスケープされ\"ます。コードを次のように変更します

    string templateString = @"
    {0}
    ""{1}""
    {2}
    ";

そしてあなたの問題はなくなるはずです。

于 2011-05-13T18:50:10.767 に答える
1

逐語的な文字列では、結果に""for aを使用します。"

于 2011-05-13T18:48:53.990 に答える
0
string templateString = @"        
{0}        
""{1}""
{2}
";

編集: Verbatim を使用するときに正しい構文を表示するように更新されました。

于 2011-05-13T18:49:02.267 に答える
0

出力で単一の二重引用符を生成するには、「二重二重」引用符を使用します。古い VB6 が文字列を処理するのと同じ方法です。

@" ""something"" is here"; 

何かを引用符で囲んだ文字列が含まれています。

于 2011-08-24T15:34:06.460 に答える