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