string name = "張三";
Console.WriteLine("Hello, {name}."); // 輸出: Hello, {name}.
普通字符串字面量 `"..."` **不支持插值**,大括號內容按原樣輸出。必須在引號前加 `$` 前綴啟用插值語法。
string name = "張三";
Console.WriteLine($"Hello, {name}."); // 輸出: Hello, 張三.
| 語法 | 示例 | 輸出 | 說明 |
|---|---|---|---|
| 基本變量 | `$"Hi {name}"` | Hi 張三 | 直接嵌入變量名 |
| 表達式 | `$"Sum: {a + b}"` | Sum: 3 | 大括號內可寫任意 C# 表達式 |
| 格式化 | `$"Price: {price:C2}"` | Price: ¥123.45 | 冒號後跟格式字符串 (標準/自定義) |
| 對齊 | `$"|{name,-10}|{age,3}|"` | |張三 | 25| | 逗號後正數右對齊、負數左對齊 |
| 轉義大括號 | `$"JSON: {{\"key\": {value}}}"` | JSON: {"key": 42} | 雙寫 `{{` `}}` 輸出字面大括號 |
| 條件運算符 | `$"Status: {(online ? \"在線\" : \"離線\")}"` | Status: 在線 | 括號包裹三元表達式 |
| 調試輸出 (C# 10+) | `$"{name=}"` | name=張三 | 自動輸出變量名與值 |
// 錯誤
"Hello {name}" // 普通字符串
@"Hello {name}" // 逐字字符串,仍不插值
String.Format("Hi {0}", name) // 老寫法,性能較差
// 正確
$"Hello {name}" // 插值字符串
$@"Hello {name}" // 插值 + 逐字 (路徑/多行)
FormattableString fs = $"Hello {name}"; // 可延遲格式化/本地化