C# NameValueCollection集合 (转)

1.NameValueCollection类集合是基于 NameObjectCollectionBase 类。

但与 NameObjectCollectionBase 不同,该类在一个键下存储多个字符串值(就是键相同,值就连接起来如下例子)。该类可用于标头、查询字符串和窗体数据。
每个元素都是一个键/值对。NameValueCollection 的容量是 NameValueCollection 可以保存的元素数。
NameValueCollection 的默认初始容量为零。随着向 NameValueCollection 中添加元素,容量通过重新分配按需自动增加。
如下例子:

NameValueCollection myCol = new NameValueCollection();  myCol.Add("red", "rojo");//如果键值red相同结果合并 rojo,rouge  myCol.Add("green", "verde");  myCol.Add("blue", "azul");  myCol.Add("red", "rouge");  

2.NameValueCollection与Hashtable的区别

a.引用区别

hashtable:using System.Collections;

NameValueCollection:using System.Collections.Specialized;

b.键是否重复

NameValueCollection:允许重复.

HashTable是键-值集合,但键不能出现重复.

  1. Hashtable ht = new Hashtable();
  2. ht.Add("key","value");
  3. ht.Add("key", "value1"); //出错
  4. ht["key"] = "value1"; //正确

3.初始化NameValueCollection

初始化NameValueCollection需引用using System.Collections.Specialized;
完整例子源码:

  1. using System;  using System.Collections;
  2. using System.Collections.Specialized;
  3. namespace SamplesNameValueCollection
  4. {
  5. class Program
  6. {
  7. public static void Main()
  8. {
  9. //初始化NameValueCollection需引用using System.Collections.Specialized;
  10. NameValueCollection myCol = new NameValueCollection();
  11. myCol.Add("red", "rojo");//如果键值red相同结果合并 rojo,rouge
  12. myCol.Add("green", "verde");
  13. myCol.Add("blue", "azul");
  14. myCol.Add("red", "rouge");
  15. // Displays the values in the NameValueCollection in two different ways.
  16. //显示键,值
  17. Console.WriteLine("Displays the elements using the AllKeys property and the Item (indexer) property:");
  18. PrintKeysAndValues(myCol);
  19. Console.WriteLine("Displays the elements using GetKey and Get:");
  20. PrintKeysAndValues2(myCol);
  21. // Gets a value either by index or by key.
  22. //按索引或值获取
  23. Console.WriteLine("Index 1 contains the value {0}.", myCol[1]);//索引1的值
  24. Console.WriteLine("Key /"red/" has the value {0}.", myCol["red"]);//键为red的对应值rouge
  25. Console.WriteLine();
  26. // Copies the values to a string array and displays the string array.
  27. String[] myStrArr = new String[myCol.Count];
  28. myCol.CopyTo(myStrArr, 0);
  29. Console.WriteLine("The string array contains:");
  30. foreach (String s in myStrArr)
  31. Console.WriteLine("   {0}", s);
  32. Console.WriteLine();
  33. //查找green键值然后删除
  34. myCol.Remove("green");
  35. Console.WriteLine("The collection contains the following elements after removing /"green/":");
  36. PrintKeysAndValues(myCol);
  37. //清空集合
  38. myCol.Clear();
  39. Console.WriteLine("The collection contains the following elements after it is cleared:");
  40. PrintKeysAndValues(myCol);
  41. }
  42. //显示键,值
  43. public static void PrintKeysAndValues(NameValueCollection myCol)
  44. {
  45. IEnumerator myEnumerator = myCol.GetEnumerator();
  46. Console.WriteLine("   KEY        VALUE");
  47. foreach (String s in myCol.AllKeys)
  48. Console.WriteLine("   {0,-10} {1}", s, myCol[s]);
  49. Console.WriteLine();
  50. }
  51. //显示索引, 键,值
  52. public static void PrintKeysAndValues2(NameValueCollection myCol)
  53. {
  54. Console.WriteLine("   [INDEX] KEY        VALUE");
  55. for (int i = 0; i < myCol.Count; i++)
  56. Console.WriteLine("   [{0}]     {1,-10} {2}", i, myCol.GetKey(i), myCol.Get(i));
  57. Console.WriteLine();
  58. }
  59. }
  60. }

4.NameValueCollection遍历

与Hashtable相似:

  1. NameValueCollection myCol = new NameValueCollection();
  2. myCol.Add("red", "rojo");//如果键值red相同结果合并 rojo,rouge
  3. myCol.Add("green", "verde");
  4. myCol.Add("blue", "azul");
  5. myCol["red"] = "dd";
  6. foreach (string key in myCol.Keys)
  7. {
  8. Console.WriteLine("{0}:{1}", key, myCol[key]);
  9. }
  10. Console.ReadLine();

转自:http://blog.csdn.net/a497785609/article/details/5702356

posted on 2013-08-20 14:09 天使半只翼 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/william-lin/p/3270092.html

C# NameValueCollection集合 (转)相关推荐

  1. [转]迭代、集合、字典表和列表

    集合在编程的过程中用的是非常的多,如GridViewRowCollection.ConnectionStringSettingsCollection.NameValueCollection等等.一般来 ...

  2. WebAPi添加常用扩展方法及思维发散

    前言 在WebAPi中我们通常需要得到请求信息中的查询字符串或者请求头中数据再或者是Cookie中的数据,如果需要大量获取,此时我们应该想到封装一个扩展类来添加扩展方法,从而实现简便快捷的获取. We ...

  3. 写自己的ASP.NET MVC框架(上)

     开始 ASP.NET程序的几种开发方式 介绍我的MVC框架 我的MVC框架设计架构 回忆以往AJAX的实现方式 MyMVC中实现AJAX的方式 如何使用MyMVC框架中的AJAX功能 配置MyM ...

  4. NameValueCollection详解

    1.NameValueCollection类集合是基于 NameObjectCollectionBase 类. 但与 NameObjectCollectionBase 不同,该类在一个键下存储多个字符 ...

  5. NameValueCollection类总结和一个例子源码

    1.NameValueCollection类集合是基于 NameObjectCollectionBase 类.但与 NameObjectCollectionBase 不同, 该类在一个键下存储多个字符 ...

  6. MongoDB学习笔记~为IMongoRepository接口添加分页取集合的方法

    回到目录 对于数据分页,我们已经见的太多了,几乎每个列表页面都要用到分页,这已经成了一种定理了,在进行大数据展示时,如果不去分页,而直接把数据加载到内存,这简直是不可以去相向的,呵呵,在很多ORM工具 ...

  7. C#中NameValueCollection类用法详解

    C#中NameValueCollection类用法详解,1.NameValueCollection类集合是基于 NameObjectCollectionBase 类. 但与 NameObjectCol ...

  8. c#中常用集合类和集合接口之集合类系列

    常用集合类: 数组(Array)的不足(即:集合与数组的区别) 1. 数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小 ...

  9. ASP.NET (C#开发环境)Request对象 之 ServerVariables集合

    Request.ServerVariables["HTTP_USER_AGENT"] <--> 返回浏览器类型和版本号 Request.ServerVariables[ ...

最新文章

  1. Palo Alto 亚太区首席安全官:未来中国五大安全问题突出...
  2. 第六回严重鄙视360安全卫士
  3. CF 8D Two Friends (三分+二分)
  4. 数组运用_1-19 编程练习
  5. 压缩感知 的自我理解
  6. 为什么美国程序员工作比中国程序员工作轻松、加班少?
  7. 具有只读属性的ComboBox
  8. portainer 启动mysql_Docker管理工具Portainer
  9. 看ct片子的软件_X光、CT、核磁、B超的辐射到底对孩子有多大影响?
  10. bp神经网络模型拓扑结构,bp神经网络模型结构图
  11. SQL查询语句大全(大佬总结,必看)
  12. 模糊自适应整定PID控制
  13. 全网最全的人类图解析(下)——类型、人生角色、定义等
  14. 双网卡双线路DNS解析分析
  15. 为大家介绍两款私藏宝藏可视化大屏制作软件
  16. 【搬运】1 简谱和基本知识
  17. 实践一 网络攻防环境的搭建
  18. 二叉树前序后序中序互推总结
  19. 前端开发学习路径之阶段七:BootStrap详解
  20. 项目管理习题——挣钱分析法与成本预算和成本估算

热门文章

  1. 3PAR推InServ-T级存储 EMC们紧张了?
  2. 36/100. Generate Parentheses
  3. JS判断当前使用的是哪个浏览器及其版本
  4. Android中获取当前位置的使用步骤
  5. 电脑小常识----文件名长度过长解决办法
  6. webpack入门系列2
  7. mysql cmd链接不上数据库情况汇总
  8. ubuntu 14.04 安装chrome及给chromium 安装 flash player
  9. 绕过mysql的id:32933 BUG 实现order by limit 正常取数据.
  10. 记录所遇到的编译错误及解决方法