0
点赞
收藏
分享

微信扫一扫

C# 字符串拼接演进全解析 : 让你的代码更优化

在日常开发中,字符串拼接 是一个高频操作:日志记录、UI 文本渲染、SQL 拼接、报错提示……
C# 提供了多种方式来组合字符串,从最早的 + 拼接,到 string.Format,再到现在的 字符串内插,让代码变得更加简洁优雅。

今天,我们就来深入解析 C# 的字符串内插

1️⃣ 字符串拼接的传统方式

在 C# 6 之前,我们通常使用以下方式拼接字符串:

使用 +

string name = "Alice";
int age = 25;
string msg = "My name is " + name + ", I am " + age + " years old.";

⚠️ 缺点:可读性差,尤其在复杂拼接时显得混乱。

使用 string.Format

string msg = string.Format("My name is {0}, I am {1} years old.", name, age);

✅ 优点:比 + 拼接更清晰
⚠️ 缺点:参数顺序不直观,容易写错 {0} {1}

2️⃣ 字符串内插的语法

C# 6 引入了 字符串内插,让拼接更直观。

string name = "Alice";
int age = 25;
string msg = $"My name is {name}, I am {age} years old.";

👉 只需要在字符串前加 $,就能在 {} 中直接写变量或表达式。

✅ 优点:

  • • 可读性极佳
  • • 不易出错
  • • 支持表达式计算

3️⃣ 内插中的表达式

不仅可以放变量,还可以直接放表达式:

int a = 5, b = 3;
string result = $"Sum: {a + b}, Product: {a * b}";
Console.WriteLine(result);
// 输出:Sum: 8, Product: 15

甚至支持 方法调用

string msg = $"Current time: {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}";

4️⃣ 格式化与对齐

字符串内插与 格式化字符串 完美结合。

数字格式化

double price = 1234.567;
string msg = $"Price: {price:F2}"; 
// 输出: Price: 1234.57

日期格式化

DateTime now = DateTime.Now;
string msg = $"Today: {now:yyyy/MM/dd}";

对齐输出

string msg = $"|{"Name",-10}|{"Age",5}|";
Console.WriteLine(msg);
// 输出: |Name      |   Age|

👉 -10 表示左对齐,占 10 个字符宽度。

5️⃣ 内插的高级用法

✅ 多行内插字符串

从 C# 11 开始,可以用 原始字符串字面量 结合内插:

string name = "Alice";
string json = $$"""
{
  "Name": "{{name}}",
  "Age": 25
}
""";
Console.WriteLine(json);

👉 这种写法对生成 JSON/XML/SQL 特别友好。

✅ 与 Span 结合的高性能字符串内插

C# 10 引入了 插值字符串处理器,可以避免不必要的字符串分配,提升性能。例如:

public void LogMessage(FormattableString message)
{
    Console.WriteLine(message.ToString());
}

LogMessage($"User {name} logged in at {DateTime.Now}");

👉 FormattableString 可以延迟格式化,甚至直接转换为 SQL 参数化查询,提升性能和安全性。

最后

  • • 内插字符串最终还是编译成 string.Format 或 StringBuilder,性能上比 + 更优。
  • • 在 循环内拼接大字符串,仍然推荐用 StringBuilder
  • • 在 高性能场景,可以考虑 Span 或 string.Create 来优化。

 


··············  END  ··············

举报

相关推荐

0 条评论