有没有理由使用System.Uri?

时间:2008-10-19 00:50:10

标签: .net

我正在考虑它,似乎它从根本上被打破了。

  • 只有5个实例方法未标记为过时。
  • 似乎没有任何内置方式 解析查询字符串变量。
  • 没有方法可以改变Uri,例如附加一个新的查询变量。
  • HttpUtility适用于字符串,而不适用于URI

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

4 个答案:

答案 0 :(得分:8)

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

Uri类的设计不允许在创建Uri后更改它;如果你想要那种可变性,你应该使用UriBuilder。

使用Uri(或UriBuilder)对字符串的好处是,你可以获得大量的验证,以确保给定的地址格式正确,能够从绝对的地址生成相对的URI,等等。基本上,你可以将Uri视为实际的数据类型,因此使用它可以提供一定程度的强类型。

答案 1 :(得分:3)

这取决于你在做什么。我至少可以想到一个我会使用它的场景,那就是将相对URL变为绝对值。比方说,例如,你有一些你已经在某处提取过的HTML,但你不一定知道这些URL是相对的还是绝对的。您可以编写自己的解析逻辑,也可以使用Uri类,如:

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

然后您可以轻松获得绝对URL而无需担心。这一切都取决于你在做什么: - )

答案 2 :(得分:1)

答案 3 :(得分:0)

为什么所有文件类和Web类都采用未经验证的字符串? .NET Framework设计者真的放弃了像这样的字符串封装类。

如果您担心字符串数据的验证,几乎所有字符串都应该进入某种容器。没有一个,确定你的字符串的状态真的很难。它目前是如何格式化的?它是否包含无效字符?现在推出它是否可以?