为什么\字符在我的@字符串中加倍?
var phone = @"^\+(?:[0-9] ?){6,14}[0-9]$";
那么手机将等于^\\+(?:[0-9] ?){6,14}[0-9]$
我想(我发现的例子似乎表明)@字符意味着留下我的字符串我是如何拥有它的。 为什么它会加倍\以及如何阻止它?
visual studio调试器会将它显示为加倍,因为在C#中,\将在转义序列之前。 别担心 – 你的字符串不变。
它看起来只是在调试检查器中加倍。
请注意,检查器中显示的字符串不以@
开头 – 如果没有 @
,则显示如何编写字符串。 这两种forms是等价的。
如果您真的担心字符串的内容,请在控制台应用程序中输出。
以另一种方式重申,比较
var equal = @"^\+(?:[0-9] ?){6,14}[0-9]$" == "^\\+(?:[0-9] ?){6,14}[0-9]$"
永远都是true
。 就像那样
var equal = @"\" == "\\";
如果使用Text Visualizer检查变量,则会显示未转义的普通字符串,就像您逐字声明的那样。