常見誤區
代碼:
string name = "張三";
Console.WriteLine(@"Hello, {name}.");
輸出結果:`Hello, {name}.`(字面量,不會替換變量值)
符號含義對比
| 前綴 | 名稱 | 功能 | 示例輸出 |
@"" | 逐字字符串 | 禁用轉義序列,保留換行、反斜杠原意 | @"C:\Path" → C:\Path |
$"" | 插值字符串 | 大括號內表達式求值嵌入 | $"Hi {name}" → Hi 張三 |
$@"" 或 @$"" | 插值逐字字符串 | 同時具備以上兩特性 | $@"Path: {path}" → Path: C:\Dir |
正確寫法
// 1. 純插值(最常用)
Console.WriteLine($"Hello, {name}."); // Hello, 張三.
// 2. 包含反斜杠路徑時
string path = @"C:\Users\Admin";
Console.WriteLine($@"Path: {path}"); // Path: C:\Users\Admin
// 3. 複雜表達式
Console.WriteLine($"Next year: {DateTime.Now.Year + 1}");
編譯原理
插值字符串在編譯期被轉換為 `String.Format` 或 `String.Concat` 調用:
$"Hello, {name}." → String.Format("Hello, {0}.", name)
因此性能與手動拼接基本一致,但可讀性極強。
總結
- `@""` 只處理轉義,不做變量替換
- 需要變量嵌入必須用 `$""` 或 `$@""`
- C# 6.0+ 才支持插值語法,舊版本請用 `String.Format`
- 上一篇文章: Android SQLite多表操作:跨Activity訪問不同表的正確姿勢
- 下一篇文章: 從理論到實戰:如何將算法、數據結構與設計模式應用於Java項目開發
Copyright ©
程式碼之家 All Rights Reserved