String literal là hằng số chuỗi được viết trực tiếp trong code. C# hỗ trợ hai dạng:
1. Regular string literal (Chuỗi thông thường)
- Được bao bởi dấu ngoặc kép
"...". - Hỗ trợ escape sequences (chuỗi thoát):
\n(xuống dòng),\t(tab),\\(backslash),\"(dấu ngoặc kép),\uXXXX(Unicode).
2. Verbatim string literal (Chuỗi nguyên văn - @"
- Bắt đầu bằng
@"và kết thúc bằng". - Không xử lý escape sequences (trừ
""để biểu diễn dấu"bên trong). - Có thể viết trên nhiều dòng.
- Rất hữu ích cho đường dẫn file, regex, JSON, SQL...
Ví dụ
using System;
class Program
{
static void Main()
{
// Regular string với escape sequences
string str1 = "Hello, World\nNew line\tTab";
Console.WriteLine("Regular:");
Console.WriteLine(str1);
Console.WriteLine();
// Verbatim string - nhiều dòng, không escape
string str2 = @"Welcome,
Hope you are doing great!
Path: C:\Users\Admin\Documents";
Console.WriteLine("Verbatim:");
Console.WriteLine(str2);
Console.WriteLine();
// Raw string literal (C# 11+) - nhiều dòng, không escape, giữ thụt lề
string str3 = """
{
"name": "John",
"age": 30
}
""";
Console.WriteLine("Raw string (C# 11):");
Console.WriteLine(str3);
}
}
Kết quả
Regular:
Hello, World
New line Tab
Verbatim:
Welcome,
Hope you are doing great!
Path: C:\Users\Admin\Documents
Raw string (C# 11):
{
"name": "John",
"age": 30
}
Bảng so sánh
| Đặc điểm | Regular ("...") | Verbatim (@"...") | Raw (C# 11 """...""") |
|---|---|---|---|
| Escape sequences | Có | Không (trừ "") | Không |
| Nhiều dòng | Không (cần \n) | Có | Có |
| Dấu " bên trong | \" | "" | " trực tiếp |
| Thụt lề code | Khó kiểm soát | Giữ nguyên | Tự động loại bỏ thụt lề chung |
Khuyến nghị: Dùng verbatim cho đường dẫn file, regex, SQL; dùng raw string (C# 11+) cho JSON, XML, HTML nhiều dòng.