多年来,以及最近,我听到过讨论,每个人都应该使用Path.Combine而不是将字符串与“\\”连接在一起,例如:
string myFilePath = Path.Combine("c:", "myDoc.txt");
// vs.
string myFilePath = "C:" + "\\myDoc.txt";
我没有看到前一版本对后者的好处,我希望有人可以解释。
答案 0 :(得分:15)
使用Path.Combine
构建路径更具可读性且不易出错。您无需在unix上考虑目录分隔符字符{\\
或\
或/
,...)或路径的第一部分是否结束\
以及路径的第二部分是否以\
开头。
您可以专注于重要部分,目录和文件名。与String.Format
相比,字符串连接具有相同的优势。
答案 1 :(得分:9)
如果您不知道第一个目录(例如,它来自用户输入),您可能会C:\Directory
或C:\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);