1

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

instance = @"\instanceNameHere";

然而输出总是一样的。

\\instanceNameHere

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

4

3 回答 3

2

它在调试器中为您转义斜线,因此您知道它是斜线而不是转义序列,例如\t. 如果调试器不这样做,你怎么能区分字符串

\t

从字符串

<tab>

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

\\t

后者作为

\t

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

于 2011-06-30T18:45:22.450 回答
1

调试器将字符串显示为 C# 文字。所以它用转义的字符显示它们。它还会将回车显示为\r,将制表符显示为\t。这纯粹是为了可视化——字符串实际上并不包含这些转义字符。如果你把它写到日志中,它不会包含转义字符——它看起来和你期望的一样。

于 2011-06-30T18:44:54.443 回答
-2

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

关联

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

于 2011-06-30T18:45:43.433 回答