Why does .NET add an additional slash to the already existent slashes in a path?
The \\
is used because the \
is an escape character and is need to represent the a single \
.
So it is saying treat the first \
as an escape character and then the second \
is taken as the actual value. If not the next character after the first \
would be parsed as an escaped character.
Here is a list of available escape characters:
\' - single quote, needed for character literals
\" - double quote, needed for string literals
\\ - backslash
\0 – Null
\a - Alert
\b - Backspace
\f - Form feed
\n - New line
\r - Carriage return
\t - Horizontal tab
\v - Vertical quote
\u - Unicode escape sequence for character
\U - Unicode escape sequence for surrogate pairs.
\x - Unicode escape sequence similar to "\u" except with variable length.
EDIT: To answer your question regarding Split
, it should be no issue. Use Split
as you would normally. The \\
will be treated as only the one character of \
.
Debugger visualizers display strings in the form in which they would appear in C# code. Since \
is used to escape characters in non-verbatum C# strings, \\
is the correct escaped form.
.Net is not adding anything to your string here. What your seeing is an effect of how the debugger chooses to display strings. C# strings can be represented in 2 forms
- Verbatim Strings: Prefixed with an
@
sign and removes the need o escape\\
characters - Normal Strings: Standard C style strings where
\\
characters need to escape themselves
The debugger will display a string literal as a normal string vs. a verbatim string. It's just an issue of display though, it doesn't affect it's underlying value.