HttpValueCollection和NameValueCollection有什么区别?
如果可能,请举例说明。
谢谢
发布于 2011-09-22 20:07:51
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());
}
}发布于 2016-11-02 16:12:18
在达林的回答中不明显的一点是,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());
}
}输出:
param1=value1¶m2=value2
System.Collections.Specialized.NameValueCollectionhttps://stackoverflow.com/questions/7514461
复制相似问题