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 基本一致,比多次 + 拼接更高效(尤其是多变量拼接时)。

总结

  1. C# 中 $字符串插值的标识,用于简化字符串拼接,直接在字符串中嵌入变量/表达式;
  2. 核心语法:$"固定内容{变量/表达式:格式}",支持格式控制、表达式、多行字符串;
  3. 相比传统拼接/string.Format$ 让代码更简洁、可读性更高,是 C# 6.0 及以上版本的特性(主流 .NET 版本都支持)。