我在Web服务中有一行简单的代码:
instance = @"\instanceNameHere";
然而输出总是一样的。
\\instanceNameHere
如果我删除@并使用两个斜杠,我会得到相同的结果。我以前从未见过这个,我的Google-fu让我失望了。我甚至写了一个简单的应用程序,结果是正确的。那为什么它会在网络服务中起作用呢?
答案 0 :(得分:2)
它在调试器中为你转义了斜杠,所以你知道它是斜杠而不是\t
之类的转义序列。如果调试器没有这样做,你怎么能区分字符串
\t
来自字符串
<tab>
在调试器中,因为后者在\t
的转义序列中表示?因此,前者显示为
\\t
,后者为
\t
将其写入流或控制台,您将看到它只有一个斜杠,或者instance.Length
并与字符数进行比较。您会在控制台上看到17
,而\\instanceNameHere
有十八个字符。
答案 1 :(得分:1)
调试器将字符串显示为C#文字。所以它显示了转义的字符。它还会将回车显示为\r
,将标签显示为\t
。这纯粹是为了可视化 - 字符串不包含这些转义字符。如果将其写入日志,它将不包含转义字符 - 它将按预期显示。
答案 2 :(得分:-2)