提问者:小点点

与使用'+'连接字符串相比,使用Path.Combine有什么好处?


我看不出有什么区别。

能做什么比完美的字符串连接更好呢?

我猜它在背景上做的事情很相似。

有谁能告诉我为什么它经常被偏爱?


共3个答案

匿名用户

使用,它检查第一个路径的末尾是否已经有分隔符,这样就不会重复分隔符。此外,它还检查要组合的路径元素是否包含无效的字符。

匿名用户

所做的事情不仅仅是字符串连接。如果您查看源代码;

    之间用目录分隔符连接两个字符串

匿名用户

下面是实现

public static string Combine(string path1, string path2)
{
    if (path1 == null || path2 == null)
    {
        throw new ArgumentNullException((path1 == null) ? "path1" : "path2");
    }
    Path.CheckInvalidPathChars(path1, false);
    Path.CheckInvalidPathChars(path2, false);
    return Path.CombineNoChecks(path1, path2);
}

private static string CombineNoChecks(string path1, string path2)
{
    if (path2.Length == 0)
    {
        return path1;
    }
    if (path1.Length == 0)
    {
        return path2;
    }
    if (Path.IsPathRooted(path2))
    {
        return path2;
    }
    char c = path1[path1.Length - 1];
    if (c != Path.DirectorySeparatorChar && c != Path.AltDirectorySeparatorChar && c != Path.VolumeSeparatorChar)
    {
        return path1 + Path.DirectorySeparatorChar + path2;
    }
    return path1 + path2;
}