为啥用@分配字符串? [复制]
Posted
技术标签:
【中文标题】为啥用@分配字符串? [复制]【英文标题】:Why assign a string with @? [duplicate]为什么用@分配字符串? [复制] 【发布时间】:2012-09-06 21:54:44 【问题描述】:可能重复:What's the @ in front of a string in C#?
这是我长期以来一直质疑但从未费心去弄清楚的问题。当我下载第三方库时,我经常看到字符串分配在字符串前使用@
符号。
string myString = @"Some text";
但如果我只是这样做,似乎完全没有区别
string myString = "Some text";
那么@
在做什么呢?
【问题讨论】:
抱歉,我搜索的时候没看到。 @michael.mankus 那么你做了多少“研究”?我记得在我不知道它的意思时寻找它并在几秒钟内找到它...... 平心而论,我进行了谷歌搜索 (google.com/…),结果首页上的任何链接都没有解决这个问题。我认为这似乎是一个足够公平的问题。但是,如果您觉得有必要投反对票,那也没关系。正如我所说,我很抱歉重复。 我没有对你投反对票,但我可能会说你的谷歌搜索写得不好。 C#中的@可以是任何东西,如果你简单地添加单词“string”,结果会很快弹出。 【参考方案1】:它表示verbatim string literal,允许您不必转义某些字符:
string foo = @"c:\some\path\filename.exe";
对比:
string foo = "c:\\some\\path\\filename.exe";
【讨论】:
【参考方案2】:string reason = @"this string literal mea\ns something different with an @ in front than without";
如果没有@,上面的字符串将有一个换行符,而不是单词“means”中的'n'。使用@,“意思”这个词看起来就像你看到的一样。此功能对于文件路径之类的内容特别有用:
string path = @"C:\Users\LookMa\NoDoubleSlashes.txt";
【讨论】:
那有什么区别?这到底是个问题? +1 仅使用自记录代码回答问题。【参考方案3】:这是一个逐字字符串文字。它可以让您执行@"C:\"
而不是"C:\\"
之类的操作,并且在正则表达式和文件路径中特别有用,因为它们通常使用编译器不应解析的反斜杠。请参阅the documentation 了解更多信息。
【讨论】:
【参考方案4】:在这种情况下没有区别。 '@' 所做的只是允许您省略转义反斜杠。如果您使用 '@' 并希望在字符串中包含双引号,则需要将双引号加倍。
【讨论】:
以上是关于为啥用@分配字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章