5

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

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

我没有看到前一个版本比后者提供的好处,我希望有人能解释一下。

4

4 回答 4

16

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

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

于 2013-11-08T13:14:49.937 回答
9

当您不知道第一个目录时(例如,它来自用户输入),您可能已经或C:\Directory将会为您解决斜杠问题。不过,对于下一个参数,它确实有带有斜杠的怪癖。C:\Directory\Path.Combine

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

于 2013-11-08T13:14:59.373 回答
4

其他平台可以使用不同的分隔符,例如/代替\so 不使用的原因\\是独立于

于 2013-11-08T13:13:38.027 回答
3

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

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

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

string myFilePath = Path.Combine(path, filename);  
于 2013-11-08T13:13:51.440 回答