HttpValueCollection和之间有什么区别NameValueCollection?
如果可能,请举例说明.
谢谢
Dar*_*rov 48
NameValueCollection对于键是区分大小写的,HttpValueCollection不是.也是HttpValueCollection一个内部类,它源于NameValueCollection您永远不应该直接在您的代码中使用.另一个属性HttpValueCollection是,当您将值添加到此集合时,它会自动对URL进行编码.
以下是如何使用HttpValueCollection该类:
class Program
{
static void Main()
{
// returns an implementation of NameValueCollection
// which in fact is HttpValueCollection
var values = HttpUtility.ParseQueryString(string.Empty);
values["param1"] = "v&=+alue1";
values["param2"] = "value2";*
// prints "param1=v%26%3d%2balue1¶m2=value2"
Console.WriteLine(values.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
在达林的答案中不明显的一点是,NameValueCollection不覆盖ToString()方法,而HttpValueCollection覆盖方法。如果要将集合转换回查询字符串,则这种特殊的属性和值的隐式URL编码使后者成为正确的选择。
public class Test
{
public static void Main()
{
var httpValueCollection = HttpUtility.ParseQueryString(string.Empty);
httpValueCollection["param1"] = "value1";
httpValueCollection["param2"] = "value2";
Console.WriteLine(httpValueCollection.ToString());
var nameValueCollection = new NameValueCollection();
nameValueCollection["param1"] = "value1";
nameValueCollection["param2"] = "value2";
Console.WriteLine(nameValueCollection.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
param1=value1¶m2=value2
System.Collections.Specialized.NameValueCollection
Run Code Online (Sandbox Code Playgroud)