首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >常规字符串和逐字字符串之间的区别是什么?

常规字符串和逐字字符串之间的区别是什么?
EN

Stack Overflow用户
提问于 2010-07-23 02:16:10
回答 4查看 89K关注 0票数 178

我有一个ReSharper的试用版本,它总是建议我将常规字符串转换为逐字字符串。有什么关系?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-23 02:19:14

逐字字符串是不需要转义的字符串,如文件名:

代码语言:javascript
复制
string myFileName = "C:\\myfolder\\myfile.txt";

将会是

代码语言:javascript
复制
string myFileName = @"C:\myfolder\myfile.txt";

@符号表示按字面意思读取字符串,否则不会解释控制字符。

票数 209
EN

Stack Overflow用户

发布于 2010-07-23 02:39:54

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

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

代码语言:javascript
复制
var @if = "if";
//okay, treated as a name
Console.WriteLine(@if);
//compiler err, if without @ is a keyword
Console.WriteLine(if);

var @a = "a";
//okay
Console.WriteLine(@a);
//also okay, @ isn't part of the name
Console.WriteLine(a);
票数 27
EN

Stack Overflow用户

发布于 2010-07-23 02:21:55

常规字符串使用特殊的转义序列来转换为特殊字符。

代码语言:javascript
复制
/*
This string contains a newline
and a tab    and an escaped backslash\
*/
Console.WriteLine("This string contains a newline\nand a tab\tand an escaped backslash\\");

逐字字符串按原样解释,不转换任何转义序列:

代码语言:javascript
复制
/* 
This string displays as is. No newlines\n, tabs\t or backslash-escapes\\.
*/
Console.WriteLine(@"This string displays as is. No newlines\n, tabs\t or backslash-escapes\\.");
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3311988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档