【发布时间】:2012-01-24 07:21:35
【问题描述】:
我有:
string Combine = Path.Combine("shree\\", "file1.txt");
string Combine1 = Path.Combine("shree", "file1.txt");
两者都给出相同的结果:
shree\file1.txt
Path.Combine 背后究竟发生了什么?执行此操作的最佳编码实践是什么。请明确我的愿景。谢谢。
【问题讨论】:
我有:
string Combine = Path.Combine("shree\\", "file1.txt");
string Combine1 = Path.Combine("shree", "file1.txt");
两者都给出相同的结果:
shree\file1.txt
Path.Combine 背后究竟发生了什么?执行此操作的最佳编码实践是什么。请明确我的愿景。谢谢。
【问题讨论】:
如果第一个路径(shree 或 shree\\)没有以有效的分隔符结尾(例如 DirectorySeparatorChar),则它会在连接之前附加到路径中。
所以
string path1 = "shree";
string path2 = "file1.txt";
string combined = Path.Combine(path1, path2);
将产生“shree\file1.txt”,而
string path1 = "shree\\";
已经包含一个有效的分隔符,所以Combine方法不会再添加一个。
在这里,您在字符串变量 (path1) 中键入了两个斜杠。第一个只是作为第二个的转义字符。这与使用逐字字符串文字相同。
string path1 = @"shree\";
更多关于Combine方法的信息可以在MSDN上找到:
【讨论】:
使用第二个。这样你就不用关心目录分隔符是什么了。
【讨论】:
Path.Combine 背后究竟发生了什么?
它为您构建了一条路径……所以您将使用这两个中的哪一个并不重要。但是那些\\ 是多余的。
如果您对微优化感兴趣,请创建一个测试两者中哪个更快。
【讨论】: