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

  • 相关阅读:
    UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
    UVa 1658 (拆点法 最小费用流) Admiral
    UVa 11082 (网络流建模) Matrix Decompressing
    UVa 753 (二分图最大匹配) A Plug for UNIX
    UVa 1451 (数形结合 单调栈) Average
    UVa 1471 (LIS变形) Defense Lines
    UVa 11572 (滑动窗口) Unique Snowflakes
    UVa 1606 (极角排序) Amphiphilic Carbon Molecules
    UVa 11054 Wine trading in Gergovia
    UVa 140 (枚举排列) Bandwidth
  • 原文地址:https://www.cnblogs.com/Alex80/p/4729826.html
Copyright © 2011-2022 走看看