Start Debugging
2023-03-15 更新日 2023-11-05 csharp Edit on GitHub

C# 11 の raw 文字列リテラル (三重引用符構文)

C# 11 の raw 文字列リテラル (三重引用符構文 `"""`) を使い、エスケープシーケンスなしで空白、改行、引用符を埋め込みます。ルールと例を紹介します。

raw 文字列リテラルは、エスケープシーケンスを使わずに、空白、改行、埋め込まれた引用符などの特殊文字を文字列に含められる新しい形式です。

仕組みは次のとおりです。

簡単な例です。

string rawString = """
    Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit.
    """;

出力は次のようになります。

Lorem ipsum "dolor" sit amet,
    consectetur adipiscing elit.

終了シーケンス前の空白

終了ダブルクォートの前の空白が、raw 文字列式から削除される空白の量を決めます。先ほどの例では """ シーケンスの前に 4 つの空白があったので、式の各行から 4 つの空白が削除されました。終了シーケンスの前に 2 つの空白しかなければ、raw 文字列の各行から 2 つの空白だけが削除されます。

例: 終了シーケンスの前に空白がない場合

先ほどの例で、終了シーケンスの前に空白を一切指定しなければ、結果の文字列はインデントをそのままの形で保持します。

式:

string rawString = """
    Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit.
""";

出力:

    Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit.

開始 / 終了シーケンスで 3 つを超えるダブルクォートを使う

raw 文字列の中身に 3 つのダブルクォートのシーケンスがあるときに役立ちます。次の例では raw 文字列リテラルの開始と終了に 5 つのダブルクォートを使い、本文には 3 つや 4 つのダブルクォートのシーケンスを含められます。

string rawString = """""
    3 double-quotes: """
    4 double-quotes: """"
    """"";

出力:

3 double-quotes: """
4 double-quotes: """"

関連するエラー

CS8997: Unterminated raw string literal.

string rawString = """Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit. 
    """;

CS9000: Raw string literal delimiter must be on its own line.

var rawString = """
    Lorem ipsum "dolor" sit amet,
        consectetur adipiscing elit.""";

CS8999: Line does not start with the same whitespace as the closing line of the raw string literal.

var rawString = """
    Lorem ipsum "dolor" sit amet,
consectetur adipiscing elit.
    """;

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< 戻る