反斜杠在我的Web服务中无法正常工作

时间:2011-06-30 18:40:38

标签: c# backslash string-literals

我在Web服务中有一行简单的代码:

instance = @"\instanceNameHere";

然而输出总是一样的。

\\instanceNameHere

如果我删除@并使用两个斜杠,我会得到相同的结果。我以前从未见过这个,我的Google-fu让我失望了。我甚至写了一个简单的应用程序,结果是正确的。那为什么它会在网络服务中起作用呢?

3 个答案:

答案 0 :(得分:2)

它在调试器中为你转义了斜杠,所以你知道它是斜杠而不是\t之类的转义序列。如果调试器没有这样做,你怎么能区分字符串

\t

来自字符串

<tab>

在调试器中,因为后者在\t的转义序列中表示?因此,前者显示为

\\t

,后者为

\t

将其写入流或控制台,您将看到它只有一个斜杠,或者instance.Length并与字符数进行比较。您会在控制台上看到17,而\\instanceNameHere有十八个字符。

答案 1 :(得分:1)

调试器将字符串显示为C#文字。所以它显示了转义的字符。它还会将回车显示为\r,将标签显示为\t。这纯粹是为了可视化 - 字符串不包含这些转义字符。如果将其写入日志,它将不包含转义字符 - 它将按预期显示。

答案 2 :(得分:-2)

任何格式的UNC名称,始终以两个反斜杠字符(“\”)开头。

Link

更新:请参阅上面的@Jason帖子!我没有意识到他正在检查调试器。