【发布时间】:2019-02-27 05:15:16
【问题描述】:
我刚开始使用 .NET Core 2.1,发现了Path.TryJoin 和Path.Join 方法。没有关于该方法的文档。
我运行了一些调用该方法的单元测试,它与Path.Combine 没有什么不同。
除了利用新的 C# Span<T> 数据类型来最小化字符串操作执行之外,还有什么好处吗?
【问题讨论】:
我刚开始使用 .NET Core 2.1,发现了Path.TryJoin 和Path.Join 方法。没有关于该方法的文档。
我运行了一些调用该方法的单元测试,它与Path.Combine 没有什么不同。
除了利用新的 C# Span<T> 数据类型来最小化字符串操作执行之外,还有什么好处吗?
【问题讨论】:
您可以找到引入Path.Join 背后的基本原理here。恕我直言,它似乎是在以简单性换取性能和一些小修复,也找不到任何迹象表明 Join 创建了具有正确分隔符的跨平台有效路径,如 Path.Combine 确实,但从所有角度来看都是应该的。
为了详细说明讨论,Path.Join 解决的主要怪癖是最后一个根深蒂固的论点,很多人不希望以它的方式工作(接缝次要但显然不是),因为可以在the worst gotcha in C# or .NET page 上的示例中可以看到。
讨论的总体思路是慢慢弃用Combine,转而支持Join。
还请注意,已为 Path.Join 添加了带有此 PR 的字符串重载
【讨论】:
Span<char> 如何来自某些设备的讨论,我会接受。如果 URL 发生变化,我不希望它保留为仅链接。