[原]System.IO.Path.Combine 路径合并
使用 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
但还是觉得不够完美
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!