什么时候在字符串之前使用@更好?

Nat*_*pos 4 c# string syntax coding-style prefix

在声明或使用a的代码中string,我通常会看到开发人员声明它是这样的:

string randomString = @"C:\Random\RandomFolder\ThisFile.xml";
Run Code Online (Sandbox Code Playgroud)

代替:

string randomString = "C:\\Random\\RandomFolder\\ThisFile.xml";
Run Code Online (Sandbox Code Playgroud)

这是我看到的唯一一个更好的使用@前缀的东西,因为你不需要做\\,但是当它比没有它更好的时候还有其他用途吗?

Cod*_*ray 8

@标志指示编译器该字符串是逐字字符串,因此不需要你逃脱任何字符.当然,不仅仅是反斜杠.编译器不处理任何类型的转义序列.

它是否"更好"是一个非常难以回答的问题.这是一种纯粹的风格选择.有些人可能会争辩说,当你使用字符串文字时,字符串内容更具可读性,而不是必须转义所有字符.其他人可能更喜欢一致性,其中包含通常需要转义的字符的所有字符串都必须被转义.这样可以更容易地一目了然地发现代码中的错误.(对于它的价值,我会落入后一阵营.我所有的道路都有\\.)

话虽这么说,它对于正则表达式来说非常方便,否则你就会逃避到处.而且由于它们看起来不像常规字符串,因此混淆的风险很小.


Mat*_*nen 5

Windows路径名称不是唯一具有大量反斜杠的东西.例如,@ -strings对正则表达式非常有用,因为它们避免了双重转义所有内容.

它们也可以跨越多行,因此如果您最终必须在代码中使用多行字符串,它们会使它更方便.