68.字符串前面的@和$符号的作用

  1. 68.字符串前面的@和$符号的作用
    1. 68.1 题目
    2. 68.2 深入解析
    3. 68.3 答题示例
    4. 68.4 关键词联想

68.字符串前面的@和$符号的作用


68.1 题目

C#中在字符串前面加一个@符号或者$符号有什么作用?


68.2 深入解析

在C#中,@符号和$符号在字符串前面的作用如下:

  • @符号:@符号可以让转义字符失效,即在字符串中不会对特殊字符进行转义处理,直接输出字符本身。这在需要输出包含转义字符的路径、正则表达式等情况下很有用。
string path = @"C:\Users\Username\Documents\";
Console.WriteLine(path); // 输出: C:\Users\Username\Documents\

在上面的示例中,@符号使得转义字符失效,字符串中的反斜杠字符被直接输出,而不会被视为转义字符。

  • $符号:$符号用于定义插值字符串(Interpolated Strings),允许在字符串中直接插入变量的值。通过在字符串中使用 { } 括起变量名,可以在字符串中插入变量的值,这样可以使得字符串拼接更加简洁清晰。

例如:

string name = "Alice";
string greeting = $"Hello, {name}!"; // 插值字符串
Console.WriteLine(greeting); // 输出: Hello, Alice!

使用$符号定义的插值字符串可以更方便地将变量值嵌入到字符串中,提高了代码的可读性和易用性。


68.3 答题示例

“在C#中,@$是两种字符串前缀修饰符,分别用于不同场景的字符串处理。@符号的作用是创建逐字字符串(Verbatim String),它会忽略字符串中的转义字符(如\n\t),常用于路径、正则表达式等场景。例如@"C:\Users\Data"会直接输出完整路径,无需双重转义。需要注意的是,@仍允许使用双引号转义(""表示一个"字符)。

$符号则用于创建插值字符串(Interpolated String),它允许在字符串中直接嵌入表达式,语法是$"{expression}"。例如$"Hello, {name}!"会自动将变量name的值替换到字符串中。插值字符串内部支持复杂表达式,如{x + y}{person.Name.ToUpper()},还能通过:format指定格式(如{price:C2}格式化为货币)。

这两种修饰符还可以组合使用($@""@$""顺序均可),用于创建支持插值的逐字字符串,在处理包含变量的路径或正则表达式时非常实用。”


68.4 关键词联想

  • @符号:

    • 逐字字符串(Verbatim String)
    • 路径/正则表达式简化
    • 多行字符串(无需\n
    • 双引号转义(""
    • 与XML/JSON兼容性
  • $符号:

    • 字符串插值(String Interpolation)
    • 表达式嵌入({expression}
    • 格式说明符(:N2:D8等)
    • 编译时转换为string.Format
    • IFormattable接口
  • 组合使用:

    • $@"path\{variable}\file"
    • 避免双重转义与变量结合
    • 提高复杂字符串的可读性
  • 对比:

    • 传统字符串拼接(+
    • string.Format方法
    • StringBuilder性能优化
    • C# 6.0+ 语法特性


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏