.NET имеет класс Uri.
Perl имеет URI-модуль.
Основное различие заключается в том, что URI.pm позволяет извлекать компоненты строки запроса как хэш и устанавливать хэш в URI для построения симпатичного URI с аргументами запроса. Я не вижу ничего подобного на стороне .NET. Есть ли какой-то скрытый класс, о котором я не знаю?
Ответ, по-видимому, "Нет". В .NET Framework нет встроенного класса, который может принимать коллекцию имен и значений и создавать строку запроса или позволять вам напрямую изменять компонент строки запроса в URI, как если бы это была коллекция.
Другая утилита обеспечивает синтаксический анализ строк запроса: System.Web.HttpUtility.ParseQueryString() - Разбирает строку запроса в NameValueCollection.
Пример из Документ HttpUtility:
String querystring;
...
// Parse the query string variables into a NameValueCollection.
NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
// Iterate through the collection.
StringBuilder sb = new StringBuilder();
foreach (String s in qscoll.AllKeys)
{
sb.Append(s + " - " + qscoll[s] + "<br />");
}