CUIDADO: A Interpretação Feita Pela Classe System.Web.HttpValueCollection Não É Reversível
Se executarem este código:
System.Collections.Specialized.NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString("noKey&=emptyKey&A=Akey");
queryString será, na verdade, uma referência para uma instância do tipo System.Web.HttpValueCollection.
O que esta classe tem de bom é que o resultado da chamada ao método ToString é o conteúdo da colecção devidamente codificado e formatado para ser usado num URL.
Tal como acontece com a classe base (NameValueCollection), há uma diferença entre a chave ser uma cadeia (string) nula ou uma cadeia vazia na forma como é feita a interpretação da cadeia de entrada. Uma cadeia nula corresponde a não ser especificado parâmetro e uma cadeia vazia corresponde a ser especificado um parâmetro cujo nome é uma cadeia vazia.
Sendo assim, quando se chama ToString numa instância retornada pelo método System.Web.HttpUtility.ParseQueryString espera-se obter a cadeia de entrada (ou, pelo menos, uma que, quando interpretada, dê origem a uma colecção equivalente), certo? Na verdade, o que se obtém é isto: noKey&emptyKey&A=Akey.
Reportei este erro no connect. Se acham que é importante e deve ser corrigido, votem.