在C#中创建文件Uri

时间:2011-08-29 19:31:54

标签: c# .net uri

我想我错过了一些明显的事情......

我一直在阅读新项目中的代码,并遇到了与以下代码相同的代码:

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成语。有人能告诉我这个原因可能是什么吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

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

您可以在LINQPad中看到这一点:

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

我猜原始的开发人员并不知道这一点。

答案 1 :(得分:1)

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

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

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