规则字符串和逐字字符串之间有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (55)

我有一个Resharper的试用版,它总是暗示我将常规字符串切换为逐字字符串。 有什么不同?

提问于
用户回答回答于

逐字字符串是不需要转义的字符串,如文件名: string myFileName =“C:\\ myfolder \\ myfile.txt”; 将会string myFileName = @“C:\ myfolder \ myfile.txt”; @符号意味着从字面上读取该字符串,否则不要解释控制字符。

用户回答回答于

常规字符串文字由零个或多个用双引号括起来的字符组成,如“hello”,并且可能包含简单转义序列(如制表符的\ t)以及十六进制和Unicode转义序列。 逐字字符串文字由@后跟双引号字符的@字符,零个或多个字符以及一个闭合的双引号字符组成。一个简单的例子是@“你好”。在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是引号转义序列。特别是,简单字符串文字中不处理简单转义序列和十六进制和Unicode转义序列。逐字字符串文字可能跨越多行。 换句话说,@“逐字串字面值”中唯一的特殊字符是双引号字符。如果你想写一个包含双引号的逐字字符串,你必须写两个双引号。所有其他字符都按字面解释。 你甚至可以在逐字字符串文字中新增文字。在一个普通的字符串文字中,你不能有新的文字行。相反,必须使用例如“\ n”。 逐字字符串文字常常用于在源代码中嵌入文件名和正则表达式,因为这些类型的字符串中的反斜杠是常见的,如果使用常规字符串文字,则需要转义。 从常规字符串文字创建的字符串与从逐字字符串文字创建的字符串之间在运行时没有区别 - 它们都是System.String类型。

扫码关注云+社区