首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 字符串插值 $ 符號缺失導致變量不替換:Console.WriteLine 正確用法

     編輯:程式設計綜合問答

錯誤代碼

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=張三 自動輸出變量名與值

性能提示

  • C# 10+ 編譯器優先使用 `DefaultInterpolatedStringHandler` 結構體,**避免 `string.Format` 分配臨時數組/對象**,性能接近 `StringBuilder` 手寫拼接。
  • 熱路徑中避免複雜表達式 (如 LINQ 查詢) 直接放入插值,預先計算存入局部變量再插值。
  • `$@""` 組合用於文件路徑、SQL、多行模板:`$@"C:\Users\{name}\Docs"`。

常見誤區對比

// 錯誤
"Hello {name}"           // 普通字符串
@"Hello {name}"          // 逐字字符串,仍不插值
String.Format("Hi {0}", name) // 老寫法,性能較差

// 正確
$"Hello {name}"          // 插值字符串
$@"Hello {name}"         // 插值 + 逐字 (路徑/多行)
FormattableString fs = $"Hello {name}"; // 可延遲格式化/本地化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved