Webサービスに簡単なコード行があります。
instance = @"\instanceNameHere";
それでも、出力は常に同じです。
\\instanceNameHere
@を削除し、2つのスラッシュを使用すると、同じ結果が得られます。私はこれを前に見たことがなく、私のグーグルフーは私に失敗しました。簡単なアプリも書いたのですが、結果は正しかったです。では、なぜそれがWebサービスで機能しているのでしょうか。
Webサービスに簡単なコード行があります。
instance = @"\instanceNameHere";
それでも、出力は常に同じです。
\\instanceNameHere
@を削除し、2つのスラッシュを使用すると、同じ結果が得られます。私はこれを前に見たことがなく、私のグーグルフーは私に失敗しました。簡単なアプリも書いたのですが、結果は正しかったです。では、なぜそれがWebサービスで機能しているのでしょうか。
デバッガーでスラッシュをエスケープしているので、それがスラッシュであり、のようなエスケープ シーケンスではないことがわかります\t
。デバッガーがこれを行わなかった場合、どのようにして文字列を区別できますか
\t
文字列から
<tab>
後者はエスケープシーケンスで\t
?によって表されるため、デバッガーで。したがって、前者は次のように示されます。
\\t
そして後者は
\t
ストリームまたはコンソールに書き込むと、スラッシュが 1 つしかないことがわかります。または、スラッシュを実行しinstance.Length
て文字数と比較します。17
コンソールに表示されます\\instanceNameHere
が、18 文字あります。
デバッガーは文字列を C# リテラルとして表示します。そのため、文字をエスケープして表示しています。また、キャリッジ リターンは として\r
、タブは として表示され\t
ます。これは純粋に視覚化のためのものです。文字列には、これらのエスケープ文字が文字通り含まれているわけではありません。ログに書き出す場合、エスケープ文字は含まれません。期待どおりに表示されます。
常に 2 つのバックスラッシュ文字 ("\") で始まる任意の形式の UNC 名。
更新:上記の@Jasonの投稿をご覧ください!彼がデバッガーでチェックインしていることに気づきませんでした。