If I call
var nvc = HttpUtility.ParseQueryString("?foo=bar&baz=robots")
I get back a NameValueCollection where if I call ToString on it, I get back a query string.
var str = nvc.ToString(); //foo=bar&baz=robots....
If I create a new NameValueCollection, add stuff to it, and call ToString() on it, I don’t get back a query string.
var nvc= new NameValueCollection();
nvc["foo"] = "bar";
var str = nvc.ToString(); //default for Object.ToString()
Also there doesn’t seem to be a way to construct a NameValueCollection that acts as a query string editor. Is there one? If not, why? Being able to edit query strings is a pretty useful thing, but this functionality is totally hidden away in an obscure mode of some object most people don’t even know exists.
This is done by the internal
HttpValueCollectionclass, which inheritsNameValueCollectionand overridesToString().ParseQueryString()is the only public way to construct this class.