Menyusun potongan JSON, pola regex, atau teks yang memuat tanda kutip dalam string biasa berarti menumpuk backslash dan tanda petik escape. Satu tanda kutip yang terlepat membuat compiler menolak program, dan teksnya pun sulit dibaca. C# 11 memperkenalkan raw string literal: string yang isinya diperlakukan apa adanya, tanpa pemrosesan escape sama sekali.

Sintaks Raw String #

Raw string ditulis dengan tanda petik dua tiga kali ("""). Karena pembatasnya tiga petik, satu petik dua biasa di dalam teks tidak perlu di-escape:

csharp
string ucapan = """Kata kasir: "Terima kasih!" selamat datang kembali""";
Console.WriteLine(ucapan);

Output yang Dihasilkan:

text
Kata kasir: "Terima kasih!" selamat datang kembali

Compiler hanya mengakhiri string saat menemukan tiga petik berurutan, sehingga tanda petik tunggal di dalam teks lulus begitu saja. Pada string biasa, teks yang sama harus ditulis dengan \" di setiap kutipan.

Raw String Multiline dan Aturan Indentasi #

Bentuk multiline membuka string dengan """ lalu berlanjut ke baris berikutnya. Posisi penutup """ menentukan batas indentasi yang dibuang:

csharp
string json = """
    {
        "produk": "Kopi Gayo",
        "harga": 45000
    }
    """;
Console.WriteLine(json);

Output yang Dihasilkan:

text
{
    "produk": "Kopi Gayo",
    "harga": 45000
}

Mari kita telaah aturannya:

  1. Baris 1 (string json = """): Pembatas pembuka mengakhiri baris; isi string dimulai pada baris berikutnya, sehingga karakter baris baru pertama tidak ikut masuk.
  2. Baris 2-5: Seluruh baris isi ditulis menjorok; compiler mengukur indentasi baris penutup """ sebagai garis dasar, lalu membuang indentasi sebanyak itu dari tiap baris isi.
  3. Hasil akhir: JSON tampil dengan indentasi dua spasi persis sebagaimana relatif terhadap garis dasar, tanpa spasi ekstra di awal.

Aturan indentasi ini menjaga kode tetap rapi di dalam method tanpa mengotorisi isi string. Petunjuknya sederhana: indentasi baris penutup menentukan berapa banyak spasi yang dibuang dari setiap baris isi.

Backslash Tanpa Escape #

Raw string tidak memproses escape sequence, sehingga backslash tampil apa adanya. Pola regex yang memuat \d tidak perlu ditulis ganda:

csharp
string pola = """\d{3}-\d{4}""";
Console.WriteLine(pola);

Output yang Dihasilkan:

text
\d{3}-\d{4}

Pada string biasa, teks yang sama harus ditulis "\\d{3}-\\d{4}". Dengan raw string, pola yang diketik sama persis dengan pola yang dibaca.