如何使用String interpolation实现与string.Format等价的字符串拼接?
用字符串插值实现给金额添加双引号的更优方式
你的现有写法 var formattedamount1 = $"\"{amount}\""; 是完全有效的,但我们可以通过几种方式避免转义字符,提升代码的可读性:
1. 使用逐字字符串字面量(C# 6+)
在插值字符串前加上@前缀(逐字字符串),这样可以用两个双引号来表示一个实际的双引号,不用写反斜杠转义:
var amount = "$1,000.99"; var formattedAmount = $@"""{amount}"""; // 输出结果:"$1,000.99"
这种写法的好处是减少了转义符,字符串结构更直观,一眼就能看出是给变量前后包裹双引号。
2. 使用原始字符串字面量(C# 11+)
如果你使用的是C# 11或更高版本,原始字符串字面量是最优雅的选择——用三个双引号包裹内容,内部的双引号不需要任何转义:
// 单行写法 var formattedAmount = $""""{amount}""""; // 多行写法(适合更复杂的字符串场景) var formattedAmount = $""" "{amount}" """;
原始字符串字面量完全消除了转义的需求,对于包含多个特殊字符的字符串来说,可读性和维护性都大幅提升。
对比与总结
这几种写法最终的输出结果和你原来的代码、以及string.Format的实现完全一致,都是给amount变量前后添加双引号。选择哪种方式取决于你的项目所使用的C#版本:
- 若使用C# 10及以下,
$@"""{amount}"""是比转义反斜杠更优的选择; - 若使用C# 11+,原始字符串字面量是最清晰、最简洁的方案;
- 你最初的写法
$"\"{amount}\""完全正确,只是可读性稍逊一筹。
内容的提问来源于stack exchange,提问作者Prasad Kanaparthi
相关产品推荐
相关产品推荐

