【问题标题】:Why are slashes doubled in pathname in C# programs? [duplicate]为什么在 C# 程序的路径名中斜杠加倍? [复制]
【发布时间】:2017-02-16 22:06:04
【问题描述】:

在我正在阅读的C#程序中,路径名中的斜杠加倍,例如:

"C:\\Users\\Tim\\Download"

为什么在 C# 程序的路径名中斜杠会加倍,这是必要的吗?

【问题讨论】:

标签: c# escaping


【解决方案1】:

在 C# 中使用字符串,您需要使用 Escape Sequences 转义字符

转义序列

由反斜杠 () 后跟一个 字母或数字的组合称为“转义序列”。到 表示换行符、单引号或某些其他 字符常量中的字符,必须使用转义序列。一个 转义序列被视为单个字符,因此 作为字符常量有效。

转义序列通常用于 指定诸如回车和制表符移动之类的操作 终端和打印机。它们还用于提供文字 非打印字符和通常的字符的表示 具有特殊含义,例如双引号 (")。 下表列出了 ANSI 转义序列及其含义 代表。

请注意,问号前面有反斜杠 (\?) 在字符的情况下指定文字问号 序列会被误解为三元组。更多信息请参见三元组 信息。

\a  Bell (alert)
\b  Backspace
\f  Formfeed
\n  New line
\r  Carriage return
\t  Horizontal tab
\v  Vertical tab
\'  Single quotation mark
\"  Double quotation mark
\\  Backslash
\?  Literal question mark
\ ooo   ASCII character in octal notation
\x hh   ASCII character in hexadecimal notation
\x hhhh Unicode character in hexadecimal notation if this escape sequence is used in a wide-character constant or a Unicode string literal.

For example, WCHAR f = L'\x4e00' or WCHAR b[] = L"The Chinese character for one is \x4e00".

【讨论】:

    【解决方案2】:

    斜杠不会加倍 - 它们只是被转义,因为反斜杠在 C# 字符串中具有特殊含义。反斜杠后跟一些字符的字符组合称为转义序列。它们用于表示不可打印的字符、回车等操作和具有特殊含义的字符,如双引号或反斜杠。

    转义序列示例:

    • \n - 换行
    • \t - 水平制表符
    • \" - 双引号
    • \\ - 反斜杠

    所以如果你想在你的字符串中有反斜杠字符:

    "C:\Users\Tim\Download"
    

    您应该使用相应的转义序列:

    "C:\\Users\\Tim\\Download" 
    

    或者您可以使用逐字字符串。不处理逐字字符串转义序列

    @"C:\Users\Tim\Download" 
    

    延伸阅读:Escape Sequences

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2018-02-23
      • 2011-07-24
      相关资源
      最近更新 更多