【问题标题】:What actually happen behind Path.CombinePath.Combine 背后的实际情况
【发布时间】: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 背后究竟发生了什么?执行此操作的最佳编码实践是什么。请明确我的愿景。谢谢。

【问题讨论】:

    标签: c# asp.net path


    【解决方案1】:

    如果第一个路径(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上找到:

    http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

    【讨论】:

      【解决方案2】:

      使用第二个。这样你就不用关心目录分隔符是什么了。

      【讨论】:

        【解决方案3】:

        Path.Combine 背后究竟发生了什么?

        它为您构建了一条路径……所以您将使用这两个中的哪一个并不重要。但是那些\\ 是多余的。
        如果您对微优化感兴趣,请创建一个测试两者中哪个更快。

        【讨论】:

          猜你喜欢
          • 2013-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-08
          • 1970-01-01
          • 1970-01-01
          • 2020-06-21
          相关资源
          最近更新 更多