为什么Path.Combine比“\\”更好?

时间:2013-11-08 13:10:22

标签: c# string

多年来,以及最近,我听到过讨论,每个人都应该使用Path.Combine而不是将字符串与“\\”连接在一起,例如:

string myFilePath = Path.Combine("c:", "myDoc.txt");  
// vs.  
string myFilePath = "C:" + "\\myDoc.txt";

我没有看到前一版本对后者的好处,我希望有人可以解释。

4 个答案:

答案 0 :(得分:15)

使用Path.Combine构建路径更具可读性且不易出错。您无需在unix上考虑目录分隔符字符{\\\/,...)或路径的第一部分是否结束\以及路径的第二部分是否以\开头。

您可以专注于重要部分,目录和文件名。与String.Format相比,字符串连接具有相同的优势。

答案 1 :(得分:9)

如果您不知道第一个目录(例如,它来自用户输入),您可能会C:\DirectoryC:\Directory\Path.Combine将为您解决尾随斜杠问题。尽管如此,它确实存在带有前导斜杠的怪癖。

其次,虽然对于大多数应用程序来说通常不是问题,但对于Path.Combine,您并不是对平台目录分隔符进行硬编码。对于可以部署到除Windows之外的其他操作系统的应用程序,这很方便。

答案 2 :(得分:4)

其他平台可以使用不同的分隔符,例如/而不是\,因此不使用\\的原因是S.O.独立

答案 3 :(得分:3)

在这种情况下,它并不重要,但你为什么不写:

string myFilePath = "C:\\myDoc.txt";

如果您正在使用路径变量并且您不想检查反斜杠(或任何需要的削减,取决于平台),Path.Combine()方法很有用:

string myFilePath = Path.Combine(path, filename);