2008-10-19 119 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框架設計師真的把這個球放在字符串封裝類上。

如果您擔心字符串數據的驗證,幾乎所有的字符串都應該放入某種容器中。沒有人確定你的字符串的狀態是非常困難的。它如何格式化?它是否包含無效字符?現在啓動它可以嗎?

相關問題