用c#创建一个文件Uri

本文关键字:一个 文件 Uri 创建 | 更新日期: 2023-09-27 18:07:02

我想我错过了一些明显的东西....

我一直在阅读一个新项目中的代码,并遇到了类似以下的代码:

var filePath = @"C:'temp'tmp1234.tmp";    // Generally obtained from System.IO.* calls
var uri = new Uri("file://" + filePath);

我想这相当于:

var filePath = @"C:'temp'tmp1234.tmp";
var uri = new Uri(filePath);

(假设Uri类可以解析文件路径,推断方案并执行转义所需的任何操作)。

由于代码似乎可以工作,并且这种工作如此频繁和一致,我假设原始开发人员有一个很好的理由使用"file://" + filePath习语。有人能告诉我原因是什么吗?

谢谢!

用c#创建一个文件Uri

它们都生成完全相同的Uri对象,(显然)OriginalString除外。

您可以在LINQPad:

中看到这一点
var filePath = @"C:'temp'tmp1234.tmp";    // Generally obtained from System.IO.* calls
new []{ 
    new Uri("file://" + filePath),
    new Uri(filePath)
}.Dump();

我猜最初的开发者并没有意识到这一点。

实际上,添加"file://"会强制执行该方案,因此跳过了.NET调用"ParseSchemeCheckImplicitFile"方法的需要…所以…它[可以忽略不计]快。

那,而且,它是明确的-我个人更喜欢。

编辑:实际上,我应该说的是它跳过了该方法中的许多代码。