Path.Combine容易被忽略的细节

Path.Combine这个方法是很常用的一个方法,通常用它来拼接路径。尤其是存在对路径有跨平台的场景,更应该使用它来处理路径拼接。

那Path.Combine会存在怎么样的一个问题呢?

cs 复制代码
private class TestClass
{
  public void Test()
  {
    var result= Path.Combine("C:\Users\Desktop\tmp","/image.png")
  }
}

以上代码中 result 结果会是什么呢?

result = C:\Users\Desktop\tmp/image.png 吗?

实际上,结果是 /image.png。

为什么会这样子?

看下微软的注解:

复制代码
        此方法旨在将单个字符串连接到表示文件路径的单个字符串中。但是,    如果第一个以外的参数包含根路径,则忽略以前的任何路径组件,并且返回    的字符串以该根路径组件开头。 作为 方法的 Combine 替代方法,请考虑    使用 Join 或 TryJoin 方法。

有这段注解应该就很好理解了,因为我们需要拼接的字符串中,以/或'\'开头,那么它将忽略前面的参数。

所以我们在处理路径拼接的时候,一定要注意下这种场景,它会导致隐藏的BUG。

相关推荐
我是唐青枫34 分钟前
C#.NET SpinLock 深入解析:自旋锁原理、使用边界与性能取舍
c#·.net
似水明俊德41 分钟前
13-C#.Net-设计模式六大原则-学习笔记
笔记·学习·设计模式·c#·.net
无心水1 小时前
【时间利器】5、多语言时间处理实战:Go/C#/Rust/Ruby统一规范
golang·rust·c#·时间·分布式架构·openclaw·openclaw变现
林鸿群1 小时前
.NET 10 打造 Google Play 风格游戏商城首页 - 完整实战
游戏·.net
A_nanda2 小时前
ZR.Admin.NET后台管理系统
vue·.net·zradmin
量子物理学2 小时前
.NET8 中 WPF与ScottPlot 报表 的完美结合
.net·wpf
似水明俊德2 小时前
16-C#.Net-自研ORM框架-学习笔记
windows·笔记·学习·c#·.net
A_nanda3 小时前
C#类型转换最佳实践
java·jvm·c#
唐青枫3 小时前
C#.NET System.Threading.Lock 深入解析:新一代 lock、底层语义与使用边界
c#·.net
步步为营DotNet3 小时前
全面解读C# 14在云原生微服务开发中的创新应用
微服务·云原生·c#