使用 ILSpy 工具查看了 System.IO.Path 类中的 Combine 方法
对它的功能有点不放心,原方法实现如下:
// System.IO.Path /// <summary>Combines two path strings.</summary> /// <returns>A string containing the combined paths. If one of the specified paths is a zero-length string, this method returns the other path. If <paramref name="path2" /> contains an absolute path, this method returns <paramref name="path2" />.</returns> /// <param name="path1">The first path. </param> /// <param name="path2">The second path. </param> /// <exception cref="T:System.ArgumentException"> /// <paramref name="path1" /> or <paramref name="path2" /> contain one or more of the invalid characters defined in <see cref="M:System.IO.Path.GetInvalidPathChars" />. </exception> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="path1" /> or <paramref name="path2" /> is null. </exception> /// <filterpriority>1</filterpriority> public static string Combine(string path1, string path2) { if (path1 == null || path2 == null) { throw new ArgumentNullException((path1 == null) ? "path1" : "path2"); } Path.CheckInvalidPathChars(path1); Path.CheckInvalidPathChars(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 != ‘\\‘ && c != ‘/‘ && c != ‘:‘) if (c != Path.DirectorySeparatorChar && c != Path.AltDirectorySeparatorChar && c != Path.VolumeSeparatorChar) { // return path1 + ‘\\‘ + path2; return path1 + Path.DirectorySeparatorChar + path2; } return path1 + path2; }
方法中合并文件路径没问题 C:\\\\123.txt 但若是合并网址就会像这样 http://www.baidu.com\\search
提外话: 这路径在 谷歌浏览器 和 IE10 都被正确识别为 http://www.baidu.com/search
但还是觉得不够完美
时间: 2024-10-07 05:06:24