C# 字符串内插($)的用法 - 格式化字符串的现代方式

C#字符串内插($)是C# 6.0引入的语法糖,支持表达式嵌入、格式说明符、对齐控制、转义及多行字符串,编译期优化为string.Format或string.Concat,兼具可读性、安全性与良好性能。

C# 字符串内插($)是 C# 6.0 引入的语法糖,让字符串拼接和格式化更直观、可读性更强,也比 string.Format+ 拼接更安全、更灵活。

基本用法:用 $ 开头,花括号内写表达式

在字符串前加 $,然后在字符串中用 {} 包裹变量或表达式:

示例:

string na

me = "Alice";
int age = 30;
string msg = $"Hello, {name}. You are {age} years old.";

结果:"Hello, Alice. You are 30 years old."

支持任意合法表达式,比如:{name.ToUpper()}{age * 2}{DateTime.Now:yyyy-MM-dd}

支持格式说明符和对齐控制

在表达式后加冒号 :,可指定标准或自定义格式;加逗号 , 可指定最小宽度与对齐方向:

  • {price:C2} → 货币格式,保留两位小数,如 $19.99
  • {value:D5} → 十进制补零至 5 位,如 00123
  • {text,-10} → 左对齐、占 10 字符宽(不足右补空格)
  • {text,10} → 右对齐、占 10 字符宽(不足左补空格)

处理大括号、转义和多行字符串

要显示字面量 {},需用两个大括号:{{}}

内插字符串天然支持多行(配合 verbatim 字符串 @),但注意 $ 必须在 @ 前:

$@"Name: {name}
Age: {age}
Notes: {{Important}}"

不能写成 @$"..." —— 顺序错误会编译失败。

性能与注意事项

内插字符串在编译期会被转换为 string.Format 或更优的 string.Concat,简单场景下性能接近甚至优于手动拼接。

  • 避免在循环内频繁拼接大量字符串(考虑 StringBuilder
  • 表达式中不要放副作用代码(如 {i++}),行为不易预测
  • 调试时内插字符串的值可在 VS 中直接悬停查看,非常方便

基本上就这些。用熟了,$ 字符串会让你写格式化逻辑时少出错、少查文档、也更顺手。