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(); 

  • 相关阅读:
    HDU 5585 Numbers
    HDU 3308 LCIS
    POJ 2991 Crane
    POJ 1436 Horizontally Visible Segments
    POJ 3667 Hotel
    HaiHongOJ 1003 God Wang
    【SDOI 2008】 递归数列
    5月19日省中提高组题解
    【HDU 1588】 Gauss Fibonacci
    【POJ 3233】Matrix Power Series
  • 原文地址:https://www.cnblogs.com/zxjyuan/p/2176034.html
Copyright © 2011-2022 走看看