在C#中字符串格式化
1. 基础用法
$ 放在字符串开头,就可以在字符串中直接用 {变量/表达式} 嵌入内容,替代传统的 string.Format 或 + 拼接。
示例代码:
using System;
class StringInterpolationDemo
{
static void Main()
{
// 定义变量
string name = "张三";
int age = 25;
double height = 1.75;
// 传统拼接(繁琐)
string oldWay = "姓名:" + name + ",年龄:" + age + ",身高:" + height + "米";
Console.WriteLine("传统拼接:" + oldWay);
// 使用 $ 字符串插值(简洁)
string newWay = $"姓名:{name},年龄:{age},身高:{height}米";
Console.WriteLine("插值写法:" + newWay);
// 还能直接嵌入表达式
string expressionWay = $"明年{name}的年龄:{age + 1},身高保留1位小数:{height:0.0}米";
Console.WriteLine("带表达式:" + expressionWay);
}
}
输出结果:
传统拼接:姓名:张三,年龄:25,身高:1.75米
插值写法:姓名:张三,年龄:25,身高:1.75米
带表达式:明年张三的年龄:26,身高保留1位小数:1.8米
2. 进阶用法
(1)格式控制
在 {} 内可以通过 : 指定格式(比如数字、日期格式):
DateTime now = DateTime.Now;
// 格式化日期:年-月-日 时:分
string dateStr = $"当前时间:{now:yyyy-MM-dd HH:mm}";
Console.WriteLine(dateStr); // 输出示例:当前时间:2026-01-06 10:30
// 格式化数字(保留2位小数、百分比等)
double rate = 0.789;
string rateStr = $"转化率:{rate:F2}({rate:P1})";
Console.WriteLine(rateStr); // 输出:转化率:0.79(78.9%)
(2)嵌套花括号
如果需要在插值字符串中输出 { 或 },只需写两次({{ 或 }}):
int score = 90;
string str = $"成绩:{{{score}}}分";
Console.WriteLine(str); // 输出:成绩:{90}分
(3)与 verbatim 字符串(@)结合
$ 可以和 @ 连用(注意顺序:$@ 或 @$ 都可以),用于多行字符串插值:
string path = "C:\\Project";
string fileName = "demo.cs";
// 多行插值字符串
string fullPath = $@"
项目路径:{path}
文件名:{fileName}
完整路径:{path}\{fileName}";
Console.WriteLine(fullPath);
3. 注意事项
$必须写在字符串字面量的最前面(比如$"abc",不能写成"$abc");{}内可以写任意合法的 C# 表达式(变量、运算、方法调用等),比如$"计算结果:{Calculate(10, 20)}";- 字符串插值是编译时语法糖,最终会被编译成
string.Format,性能和string.Format基本一致,比多次+拼接更高效(尤其是多变量拼接时)。
总结
- C# 中
$是字符串插值的标识,用于简化字符串拼接,直接在字符串中嵌入变量/表达式; - 核心语法:
$"固定内容{变量/表达式:格式}",支持格式控制、表达式、多行字符串; - 相比传统拼接/
string.Format,$让代码更简洁、可读性更高,是 C# 6.0 及以上版本的特性(主流 .NET 版本都支持)。