为什么.NET会为路径中已存在的斜杠添加额外的斜杠?

Gur*_*epS 10 c# debugging visual-studio

我注意到C#\为路径添加了额外的斜杠().考虑一下这条路C:\Test.当我在文本可视化器中检查带有此路径的字符串时,实际的字符串是C:\\Test.

为什么是这样?它让我感到困惑,因为有时我可能想要将路径分开(使用string.Split()),但不得不想知道使用哪个字符串(一个或两个斜杠).

Kel*_*sey 17

使用它\\是因为它\是一个转义字符,需要表示单个字符\.

因此,它将第一个\视为转义字符,然后将第二个\视为实际值.如果不是,则第一个字符之后的下一个字符\将被解析为转义字符.

以下是可用转义字符列表:

\' - 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.
Run Code Online (Sandbox Code Playgroud)

编辑:要回答你的问题Split,它应该没有问题.用Split你通常会.在\\将被视为唯一的一个字符\.


Jar*_*Par 12

.Net不会在这里添加任何内容.你看到的是调试器如何选择显示字符串的效果.C#字符串可以用2种形式表示

  • 逐字字符串:以@符号为前缀,删除了转义\\字符的必要性
  • 普通字符串:标准C样式字符串,其中\\字符需要自行转义

调试器将字符串文字显示为普通字符串与逐字字符串.这只是一个显示问题,它不会影响它的潜在价值.


Jef*_*dge 6

调试器可视化器以C#代码中出现的形式显示字符串.因为\用于转义非verbatum C#字符串中的字符,所以\\是正确的转义表单.