2011-06-30 25 views
1

正常工作,我的代碼在Web服務的簡單線:反斜槓不是在我的web服務

instance = @"\instanceNameHere"; 

然而,輸出始終是相同的。

\\instanceNameHere 

如果我刪除@並使用兩個斜線,我會得到相同的結果。我從來沒有見過這個,我的Google-fu讓我失望了。我甚至寫了一個簡單的應用程序,結果是正確的。那麼爲什麼它會在Web服務中發揮作用?

+0

你是什麼意思的「輸出」?你是否在調試器中查看這個? –

+0

是的,我正在使用調試器。 –

+0

那麼web服務與文件夾目錄不一樣,文件夾和文件路徑通常都有單斜槓。你想做什麼,只是確定爲什麼有兩個削減?看看你需要指定雙斜槓的網絡驅動器。 – Jethro

回答

2

它在調試器中爲你逃脫斜線,所以你知道它是一個斜槓而不是像\t這樣的轉義序列。如果調試不這樣做,你怎麼能夠從調試器中的字符串

<tab> 

區分字符串

\t 

,因爲後者在轉義序列由\t代表?爲此前者顯示爲

\\t 

,後者爲

\t 

寫流或控制檯,你會看到它只有一個斜線,或做instance.Length並比較字符數。您將在控制檯上看到17,而\\instanceNameHere有18個字符。

+0

呃。就是這樣。在我的小測試程序中,我將它寫出來給控制檯,因此它看起來很正確。從來不知道調試器。說得通。謝謝! –

1

調試器顯示字符串爲C#文字。所以它顯示他們與字符逃脫。它還會顯示回車爲\r,標籤爲\t。這純粹是爲了可視化 - 字符串並不包含這些轉義字符。如果您將它寫出到日誌中,它將不包含轉義字符 - 它會看起來像您期望的那樣。

-2

任何格式的UNC名稱,始終以兩個反斜槓字符(「\」)開頭。

Link

更新:請參閱上面@Jason帖子!我沒有意識到他正在檢查調試器。

+0

我不認爲他在談論UNC的名字。這就是你如何在C#中轉義「/」,這就是調試器顯示的內容。 – therealmitchconnors

+0

我明白了,他的評論是他在看調試器。好吧。 – Jethro