`

C# - StringDictionary, the Specialized Dictionary optmized for String

    博客分类:
  • C#
c# 
阅读更多

There is an type that is called the StringDictionary, the namespace is System.Collections.Specialized;

 

the StringDictionary is optmized for both key and value types are string;

 

What situation will the String dictionary be useful? the StringDictionary will be useful in scenario such as Application configuration;

 

Below shows the operation that you can apply on the StrnigDictionary; Hopefull it may help you understand the StringDictionary;

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using System.Collections;

namespace StringDictionaryTest
{
  class Program
  {
    static void Main(string[] args)
    {

      StringDictionary myCol = new StringDictionary();
      myCol.Add("red" , "rojo");
      myCol.Add("green", "verde");
      myCol.Add("blue", "azul");

      // Display the contenst of the collection using foreach, this is preferred method
      Console.WriteLine("Display the elemnts using foreach ");
      PrintKeysAndValues1(myCol);

      // Display the contens of the collection using Enumerator
      Console.WriteLine("Display the elements using the IEnumerator:");
      PrintKeysAndValues2(myCol);


      // Display the contents of the collection using the keys, values, Count and Item properties
      Console.WriteLine("Display the elements using the Keys, Values, Count and item properties");
      PrintKeysAndValues3(myCol);

      // Copies the StringDictionary to an array with DictionaryEntry elements.
      DictionaryEntry[] myArr = new DictionaryEntry[myCol.Count];
      myCol.CopyTo(myArr, 0);

      // Displays the values in the array.
      Console.WriteLine("Displays the elements in the array:");
      Console.WriteLine("   KEY        VALUE");
      for (int i = 0; i < myArr.Length; i++)
        Console.WriteLine("   {0,-10} {1}", myArr[i].Key, myArr[i].Value);
      Console.WriteLine();

      // Searches for a value. 
      if (myCol.ContainsValue("amarillo"))
        Console.WriteLine("The collection contains the value \"amarillo\".");
      else
        Console.WriteLine("The collection does not contain the value \"amarillo\".");
      Console.WriteLine();

      // Searches for a key and deletes it. 
      if (myCol.ContainsKey("green"))
        myCol.Remove("green");
      Console.WriteLine("The collection contains the following elements after removing \"green\":");
      PrintKeysAndValues1(myCol);

      // Clears the entire collection.
      myCol.Clear();
      Console.WriteLine("The collection contains the following elements after it is cleared:");
      PrintKeysAndValues1(myCol);
    }

    public static void PrintKeysAndValues1(StringDictionary myCol)
    {
      Console.WriteLine("   KEY         VALUE");
      foreach (DictionaryEntry d in myCol)
      {
        Console.WriteLine("   {0,-25} {1}", d.Key, d.Value);
      }
      Console.WriteLine();
    }

    public static void PrintKeysAndValues2(StringDictionary myCol)
    {
      IEnumerator myEnumerator = myCol.GetEnumerator();
      DictionaryEntry de;
      Console.WriteLine("  Key          VALUE");
      while (myEnumerator.MoveNext())
      {
        de = (DictionaryEntry)myEnumerator.Current;
        Console.WriteLine("   {0,-25} {1}", de.Key, de.Value);
      }
      Console.WriteLine();
    }

    public static void PrintKeysAndValues3(StringDictionary myCol)
    {

      string[] myKeys = new String[myCol.Count];
      myCol.Keys.CopyTo(myKeys, 0);
      Console.WriteLine("   INDEX KEY         VALUE");
      for (int i = 0; i < myCol.Count; i++)
      {
        Console.WriteLine("  {0,-5} {1,-25} {2}", i, myKeys[i], myCol[myKeys[i]] );
      }
      Console.WriteLine();
    }
  }
}
 
分享到:
评论

相关推荐

    C#获取电脑硬件配置信息

    根据提供的文件信息,本文将详细解释如何使用C#语言通过Windows Management Instrumentation (WMI)接口来获取计算机硬件配置信息。 ### 一、WMI简介 Windows Management Instrumentation(WMI)是Microsoft提供的...

    C#键值对容器的介绍

    StringDictionary是C#中的一个键值对容器,默认情况下其键不区分大小写。它实现了IDictionary&lt;string, string&gt;接口,提供了键值对的存储和检索功能。 二、NameValueCollection NameValueCollection是C#中的另一个...

    大型网站的性能优化

    - **`foreach` VS `for` 语句**:在大多数情况下,`foreach`循环比`for`循环具有更好的执行效率,因为`foreach`是编译器优化过的,而`for`循环可能需要更多的计算。 - **避免使用 `ArrayList`**:`ArrayList`由于...

    高效C#编码优化原则

    在C#编程中,优化代码性能是提升应用程序效率的关键。以下是一些高效C#编码的优化原则,这些原则有助于减少资源消耗,提高代码运行速度。 1. **Foreach VS For 语句**: - 在遍历集合时,`foreach` 通常比 `for` ...

    asp.net编译运行速度.txt

    为了提高性能,推荐使用`System.Collections.Specialized.StringCollection`来代替`ArrayList`来存储字符串,因为`StringCollection`是专门为存储字符串设计的,它内部实现了更高效的字符串管理机制。 此外,对于...

    提高.net运行速度

    2. **选择合适的字典类型**: 使用Hashtable可以提升字典操作的性能,而不是使用其他特定类型的字典,如StringDictionary、NameValueCollection或HybridDictionary。 3. **使用字符串常量**: 声明字符串常量可以减少...

    WPF本地化工具

    - **使用字符串字典**:使用`StringDictionary`类管理动态内容,使文本更容易翻译。 - **分离UI和逻辑**:遵循MVVM模式,将视图与模型解耦,使本地化工作更专注于资源文件。 - **考虑右到左布局**:对于从右向左...

    提高asp.net编译运行速度

    2. **使用Hashtable代替特定字典类型**: 例如,使用Hashtable替代StringDictionary, NameValueCollection, HybridDictionary等,因为Hashtable在某些情况下有更优的性能表现。 3. **声明字符串常量**: 对于经常使用...

    RaiDrive.Translation:RaiDrive翻译

    RaiDrive翻译项目 除英语和韩语外,某些语言源文件已初始化,但尚未完全翻译。 请为我们提供非翻译语言的帮助,同时也为我们提供翻译语言的改进。 您的贡献可以通过“请求”记录。...StringDictionary.id.xam

    .NET一些基础的优化知识

    相比于StringDictionary、NameValueCollection等其他字典集合,HashTable在性能上有一定的优势。但要注意,HashTable不是线程安全的,如果在多线程环境下,需要考虑同步机制。 3. **使用字符串常量**: 定义字符串时...

    net基本性能改进方式

    在需要存储大量键值对数据时,使用`HashTable`而非`StringDictionary`、`NameValueCollection`或`HybridCollection`,因为`HashTable`提供了更高的查找效率。 #### 6. 避免不必要的字符串引号 在初始化字符串变量...

    C程序设计资料全集PPT课件.pptx

    泛型集合则是为了提高类型安全性,比如ArrayList的泛型版本List和Hashtable的泛型版本Dictionary, TValue&gt;。泛型集合能够确保在编译时进行类型检查,避免了运行时的类型转换和潜在的异常。 **专用集合**则针对特定...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    10.3.2 StringCollection、StringDictionary和NameValueCollection 295 10.3.3 BitArray 295 10.4 Microsoft.VisualBasic.Collection类 296 10.5 强类型化的集合 296 10.6 System.Collections.Generics 299 ...

    ASP.NET2.0高级编程(第4版)1/6

    C# 2.0语言的改进1067 A.1 概述1067 A.2 泛型1068 A.2.1 泛型集合1068 A.2.2 泛型方法1072 A.3 迭代器1074 A.4 匿名方法1075 A.5 运算符重载1077 A.6 全局命名空间限定符1077 A.7 部分类1078 A.8 Visual Basic XML...

Global site tag (gtag.js) - Google Analytics