我正在考虑它,似乎它从根本上被打破了。
那么有什么好处吗?我真的应该使用它而不仅仅是字符串吗?
答案 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)
UriBuilder用于变异。 HttpUtility也很好(例如,对于查询字符串解析)。
http://msdn.microsoft.com/en-us/library/system.uribuilder.aspx
http://msdn.microsoft.com/en-us/library/system.web.httputility.parsequerystring.aspx
答案 3 :(得分:0)
为什么所有文件类和Web类都采用未经验证的字符串? .NET Framework设计者真的放弃了像这样的字符串封装类。
如果您担心字符串数据的验证,几乎所有字符串都应该进入某种容器。没有一个,确定你的字符串的状态真的很难。它目前是如何格式化的?它是否包含无效字符?现在推出它是否可以?