zoukankan      html  css  js  c++  java
  • 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是键-值集合,但键不能出现重复.


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


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

    using System;  using System.Collections; 
    using System.Collections.Specialized; 
     
    namespace SamplesNameValueCollection 

        class Program 
        { 
     
            public static void Main() 
            { 
                //初始化NameValueCollection需引用using System.Collections.Specialized; 
                NameValueCollection myCol = new NameValueCollection(); 
                myCol.Add("red", "rojo");//如果键值red相同结果合并 rojo,rouge 
                myCol.Add("green", "verde"); 
                myCol.Add("blue", "azul"); 
                myCol.Add("red", "rouge"); 
     
                // Displays the values in the NameValueCollection in two different ways. 
                //显示键,值 
                Console.WriteLine("Displays the elements using the AllKeys property and the Item (indexer) property:"); 
                PrintKeysAndValues(myCol); 
                Console.WriteLine("Displays the elements using GetKey and Get:"); 
                PrintKeysAndValues2(myCol); 
     
                // Gets a value either by index or by key. 
                //按索引或值获取 
                Console.WriteLine("Index 1 contains the value {0}.", myCol[1]);//索引1的值 
                Console.WriteLine("Key \"red\" has the value {0}.", myCol["red"]);//键为red的对应值rouge 
                Console.WriteLine(); 
     
                // Copies the values to a string array and displays the string array. 
                String[] myStrArr = new String[myCol.Count]; 
                myCol.CopyTo(myStrArr, 0); 
                Console.WriteLine("The string array contains:"); 
                foreach (String s in myStrArr) 
                    Console.WriteLine("   {0}", s); 
                Console.WriteLine(); 
     
                //查找green键值然后删除 
                myCol.Remove("green"); 
                Console.WriteLine("The collection contains the following elements after removing \"green\":"); 
                PrintKeysAndValues(myCol); 
     
                //清空集合 
                myCol.Clear(); 
                Console.WriteLine("The collection contains the following elements after it is cleared:"); 
                PrintKeysAndValues(myCol); 
     
            } 
            //显示键,值 
            public static void PrintKeysAndValues(NameValueCollection myCol) 
            { 
                IEnumerator myEnumerator = myCol.GetEnumerator(); 
                Console.WriteLine("   KEY        VALUE"); 
                foreach (String s in myCol.AllKeys) 
                    Console.WriteLine("   {0,-10} {1}", s, myCol[s]); 
                Console.WriteLine(); 
            } 
            //显示索引, 键,值 
            public static void PrintKeysAndValues2(NameValueCollection myCol) 
            { 
                Console.WriteLine("   [INDEX] KEY        VALUE"); 
                for (int i = 0; i < myCol.Count; i++) 
                    Console.WriteLine("   [{0}]     {1,-10} {2}", i, myCol.GetKey(i), myCol.Get(i)); 
                Console.WriteLine(); 
            } 
        } 
     

    4.NameValueCollection遍历
    与Hashtable相似:

    NameValueCollection myCol = new NameValueCollection();   
    myCol.Add("red", "rojo");//如果键值red相同结果合并 rojo,rouge   
    myCol.Add("green", "verde");   
    myCol.Add("blue", "azul"); 
    myCol["red"] = "dd"; 
     
    foreach (string key in myCol.Keys) 

        Console.WriteLine("{0}:{1}", key, myCol[key]); 

    Console.ReadLine(); 

  • 相关阅读:
    OSG-提示“error reading file e:1.jpg file not handled”
    OSG-加载地球文件报0x00000005错误,提示error reading file simple.earth file not handled
    QT-找开工程后,最上方提示the code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.
    我的书《Unity3D动作游戏开发实战》出版了
    java中无符号类型的第三方库jOOU
    Windows批处理备份mysql数据
    使用 DevTools 时,通用Mapper经常会出现 class x.x.A cannot be cast to x.x.A
    Java版本,Java版本MongoDB驱动,驱动与MongoDB数据库,Spring之间的兼容性
    Jrebel本地激活方法
    wget下载指定网站目录下的所有内容
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/2806412.html
Copyright © 2011-2022 走看看