2008-10-19 66 views
5

我正在看它,它似乎是从根本上打破。是否有任何理由使用System.Uri?

  • 只有5个实例方法没有被标记为过时。
  • 虽然目前没有出现任何内置的方式来 解析查询字符串变量。
  • 有没有方法来突变开放的,例如追加一个新的查询变量。
  • HttpUtility适用于字符串,而不是URI的

那么还有什么是好?我真的应该使用它而不是仅仅是字符串吗?

回答

8

我不会说Uri类在所有从根本上打破。 Uri类的目的是提供一个URI的紧凑和标准的表示。 Uri类封装了以规范形式返回URI所需的所有逻辑,并提供对IPV4和IPV6符号以及IRI支持的支持。

Uri类的目的不是允许在Uri创建后更改;如果你想要这种可变性,你应该使用UriBuilder代替。

在字符串上使用Uri(或UriBuilder)的好处是,您可以获得大量验证内容,以确保给定的地址格式正确,能够从绝对地址生成相对URI等。实质上,您可以将Uri看作是一种实际的数据类型,因此使用它可以提供一种强类型的级别。

+1

一个字符串也提供了一个“紧凑和标准的URI表示”。真正验证URI的唯一方法是调用有问题的资源,因为每个资源都有自己的规则。 – 2008-10-19 01:59:32

3

这取决于你在做什么。我至少可以考虑一个我将使用它的场景,也就是将相对URL转换为绝对值。比如说,你有一些HTML你已经拉到某个地方,但你不一定知道URL是相对的还是绝对的。你可以写你自己的分析逻辑,或者你可以使用Uri类,如:

Uri link = new Uri(new Uri(webSiteAddress), linkPulledFromSite); 
string absoluteUrl = link.AbsoluteUri; 

那么你会很容易有没有担心的绝对URL。这一切只是取决于你在做什么:-)

0

为什么所有的文件类和web类采取未验证的字符串? .NET框架设计师真的把这个球放在字符串封装类上。

如果您担心字符串数据的验证,几乎所有的字符串都应该放入某种容器中。没有人确定你的字符串的状态是非常困难的。它如何格式化?它是否包含无效字符?现在启动它可以吗?

相关问题