Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# @(at)登录文件路径/字符串_C#_Asp.net_String_Path_Escaping - Fatal编程技术网

C# @(at)登录文件路径/字符串

C# @(at)登录文件路径/字符串,c#,asp.net,string,path,escaping,C#,Asp.net,String,Path,Escaping,可能重复: 我有以下代码: new Attachment(Request.PhysicalApplicationPath + @"pdf\" + pdfItem.Value) @符号有什么作用?它与文件路径无关。它更改字符串的转义行为 在前缀为@的字符串文字中,以\开头的转义序列被禁用。这对于文件路径很方便,因为\是路径分隔符,您不希望它启动转义序列 在普通字符串中,您必须将\转义为\\,因此您的示例类似于“pdf\”。但是,由于它的前缀是@,唯一需要转义的字符是“(转义为”),并且\可以简

可能重复:

我有以下代码:

new Attachment(Request.PhysicalApplicationPath + @"pdf\" + pdfItem.Value)

@
符号有什么作用?

它与文件路径无关。它更改字符串的转义行为

在前缀为
@
的字符串文字中,以
\
开头的转义序列被禁用。这对于文件路径很方便,因为
\
是路径分隔符,您不希望它启动转义序列

在普通字符串中,您必须将
\
转义为
\\
,因此您的示例类似于“pdf\”。但是,由于它的前缀是
@
,唯一需要转义的字符是
(转义为
),并且
\
可以简单地出现

此功能对于包含
\
的字符串文本(如文件路径或正则表达式)非常方便

对于您的简单示例,增益并没有那么大,但是图像中的完整路径
“C:\\ABC\\CDE\\DEF”
然后
@“C:\ABC\CDE\DEF”
看起来好多了


对于正则表达式来说,这几乎是必须的。正则表达式通常包含几个已转义的其他字符,如果需要转义它们,通常会变得几乎不可读。

它允许您输入反斜杠(\),而无需转义:

 var s1 = "C:\\Temp\\MyFileName";
 var s2 = @"C:\Temp\MyFileName";
这两种方法都会产生一个内容相同的字符串(而且由于字符串在编译时,甚至可能是相同的字符串引用)。

这是一个错误

这允许字符串包含反斜杠甚至换行符,而不会对其进行不同的处理:

string multiLineString = @"First line
second line
third line";
由于反斜杠不用于转义,因此在字符串中插入双引号需要将其加倍:

string withQuote = @"before""after";
逐字字符串文本通常用于文件路径(如您所示)和正则表达式,这两种表达式都经常使用反斜杠


有关详细信息,请参阅my。

@Sally在删除
@
后尝试运行代码,并查看差异!或者,
Path
类也可以方便地用于文件系统路径。