有人可以向我解释@""与System.IO.Path.Combine方法有什么关系吗?

use*_*998 0 .net c# file-io directory-structure visual-studio-2010

假设我的Visual Studio C#Web应用程序中有一个像ClientBin这样的文件夹.

我很困惑@""将在以下试图创建目录路径的C#代码中执行什么操作:

String DirectoryPath = System.IO.Path.Combine(@"" + "ClientBin");
Run Code Online (Sandbox Code Playgroud)

或者说到fa文件,如下例所示:

String FilePath = System.IO.Path.Combine("admin", "access", @"" + "users.aspx");
Run Code Online (Sandbox Code Playgroud)

基本上,有人可以向我解释@""与System.IO.Path.Combine方法有什么关系吗?

Ken*_*rey 8

在这种情况下,它绝对没有做任何事情(可能是由一个非常误导的程序员引起的).通常,@字符串之前的字符串指定逐字字符串文字,其中反斜杠不再被视为转义字符.

在这里,@"" + "ClientBin"恰好等于"" + "ClientBin",这当然等于正义"ClientBin".

这里解释逐字字符串文字.


dob*_*lak 5

添加@ 意味着忽略任何转义字符序列,并在写入时获取字符串.不完全,请参阅下面的链接.

@ "C:\ TEMP\file.txt的"

是相同的

"C:\\ \\温度file.txt的"

在第二种情况下,\\ sequence表示转义的反斜杠字符.

更新:dtb是对的

字符串文字


Tim*_* S. 5

@""是一个逐字字符串文字(也见http://msdn.microsoft.com/en-us/library/ms228362.aspx),这基本上意味着反斜杠和换行是逐字而不是解析.用法通常类似于@"\ClientBin"@"[a-b]\*".告诉你的代码是使用它的方式是很荒谬的,因为@""""都是空字符串,并且你可以通过写得到同样的结果"ClientBin".