猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
规则字符串和逐字字符串之间有什么区别?
规则字符串和逐字字符串之间有什么区别?
我有ReSharper的试用版,它总是建议我将常规字符串切换为逐字字符串。有什么关系?
ibeautiful
浏览 1401
回答 3
3回答
www说
这包括在C#规范第2.4.4.5节:2.4.4.5字符串文字C#支持两种形式的字符串文字:常规字符串文本和逐字字符串文本。常规字符串文字由包含在双引号(如“hello”)中的零个或多个字符组成,并且可以包括简单转义序列(例如\t表示制表符字符)以及十六进制和Unicode转义序列。逐字串文字由一个@字符、一个双引号字符、零个或多个字符和一个结束双引号字符组成。一个简单的例子是“Hello”。在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是引号-转义序列。特别是,简单转义序列以及十六进制和Unicode转义序列不使用逐字字符串文字处理。逐字串文字可能跨越多行。换句话说,@“逐字字符串文字”中唯一的特殊字符是双引号。如果您希望编写包含双引号的逐字字符串,则必须编写两个双引号。所有其他字符都是按字面解释的。甚至可以在逐字字符串文本中有文字新行。在常规字符串文本中,不能有文字新行。相反,您必须使用例如"\n".逐字字符串文本通常用于在源代码中嵌入文件名和正则表达式,因为这些类型的字符串中的反斜杠很常见,如果使用正则字符串文字,则需要转义。从常规字符串文本创建的字符串与从逐字字符串文本创建的字符串在运行时没有区别-它们都是类型。System.String.
0
0
0
拉风的咖菲猫
字符串和逐字字符串之间没有运行时的区别。它们只是在编译时才不同。编译器在逐字字符串中接受较少的转义序列,所以除了引号转义之外,您看到的是什么?还可以使用逐字字符@告诉编译器将关键字视为名称: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);
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C#
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续