I've noticed that C# adds additional slashes (\
) to paths. Consider the path C:\Test
. When I inspect the string with this path in the text visualiser, the actual string is C:\\Test
.
Why is this? It confuses me, as sometimes I may want to split the path up (using string.Split()
), but have to wonder which string to use (one or two slashes).
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 \
.
.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
@
sign and removes the need o escape \\
characters\\
characters need to escape themselvesThe 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With