为什么\字符在我的@字符串中加倍?

时间:2012-09-18 13:41:47

标签: c# string

var phone = @"^\+(?:[0-9] ?){6,14}[0-9]$";

手机将等于^\\+(?:[0-9] ?){6,14}[0-9]$

我想(我发现的例子似乎表明)@字符意味着留下我的字符串我是如何拥有它的。为什么它会加倍\以及如何阻止它?

3 个答案:

答案 0 :(得分:10)

visual studio调试器将显示它就好像它被加倍一样,因为在C#中\ a \将在转义序列之前。别担心 - 你的字符串没有改变。

答案 1 :(得分:4)

只有看起来就像在调试检查员中加倍了一样。

请注意,检查员中显示的字符串不以@开头 - 如果没有@,它们将显示如何编写字符串。 1}}。这两种形式是等价的。

如果您真的担心字符串的内容,请在控制台应用程序中输出。

答案 2 :(得分:1)

以另一种方式重申比较

var equal = @"^\+(?:[0-9] ?){6,14}[0-9]$" == "^\\+(?:[0-9] ?){6,14}[0-9]$"

始终为true。就像那样,

var equal = @"\" == "\\";

如果使用Text Visualizer检查变量,您将看到普通的未转义字符串,就像您在声明verbatim时那样。