为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
ibeautiful 2019-07-09 14:12:09
规则字符串和逐字字符串之间有什么区别?我有ReSharper的试用版,它总是建议我将常规字符串切换为逐字字符串。有什么关系?
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

这包括在C#规范第2.4.4.5节:

2.4.4.5字符串文字

C#支持两种形式的字符串文字:常规字符串文本和逐字字符串文本。

常规字符串文字由包含在双引号(如“hello”)中的零个或多个字符组成,并且可以包括简单转义序列(例如\t表示制表符字符)以及十六进制和Unicode转义序列。

逐字串文字由一个@字符、一个双引号字符、零个或多个字符和一个结束双引号字符组成。一个简单的例子是“Hello”。在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是引号-转义序列。特别是,简单转义序列以及十六进制和Unicode转义序列不使用逐字字符串文字处理。逐字串文字可能跨越多行。

换句话说,@“逐字字符串文字”中唯一的特殊字符是双引号。如果您希望编写包含双引号的逐字字符串,则必须编写两个双引号。所有其他字符都是按字面解释的。

甚至可以在逐字字符串文本中有文字新行。在常规字符串文本中,不能有文字新行。相反,您必须使用例如"\n".

逐字字符串文本通常用于在源代码中嵌入文件名和正则表达式,因为这些类型的字符串中的反斜杠很常见,如果使用正则字符串文字,则需要转义。

从常规字符串文本创建的字符串与从逐字字符串文本创建的字符串在运行时没有区别-它们都是类型。System.String.


查看完整回答
反对 回复 2019-07-09
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

字符串和逐字字符串之间没有运行时的区别。它们只是在编译时才不同。编译器在逐字字符串中接受较少的转义序列,所以除了引号转义之外,您看到的是什么?

还可以使用逐字字符@告诉编译器将关键字视为名称:

var @if = "if";//okay, treated as a nameConsole.WriteLine(@if);//compiler err, if without @ is a keywordConsole.WriteLine(if);var @a = "a";//okayConsole.WriteLine(@a);//also okay, @ isn't part of the nameConsole.WriteLine(a);


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 1400 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信