首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpValueCollection和NameValueCollection

HttpValueCollection和NameValueCollection
EN

Stack Overflow用户
提问于 2011-09-22 20:05:29
回答 2查看 16.3K关注 0票数 35

HttpValueCollectionNameValueCollection有什么区别?

如果可能,请举例说明。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-22 20:07:51

NameValueCollection对键是区分大小写的,而HttpValueCollection不区分大小写。HttpValueCollection也是一个从NameValueCollection派生的内部类,你永远不应该在代码中直接使用它。HttpValueCollection的另一个属性是,当您将值添加到此集合中时,它会自动对值进行url编码。

下面是如何使用HttpValueCollection类:

代码语言:javascript
复制
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&param2=value2"
        Console.WriteLine(values.ToString());
    }
}
票数 52
EN

Stack Overflow用户

发布于 2016-11-02 16:12:18

在达林的回答中不明显的一点是,NameValueCollection没有覆盖ToString()方法,而HttpValueCollection覆盖了它。如果要将集合转换回查询字符串,这种特殊的属性和值的隐式URL编码使后者成为正确的选择。

代码语言:javascript
复制
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());  
    }
}

输出:

代码语言:javascript
复制
param1=value1&param2=value2
System.Collections.Specialized.NameValueCollection
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7514461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档