KeyValuePair是单个的键值对对象。KeyValuePair可用于接收combox选定的值。

例如:KeyValuePair<string, object> par = (KeyValuePair<string, object>)shoplistcomboBox.SelectedItem;

单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分。

Hashtable是一个集合。在多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减。

1.键值对Dictionary:Dictionary<string,string>键值对的使用

public void CreateDictionary()
{
Dictionary<string,string> dic=new Dictionary<string,string>();
//添加
dic.Add("1","one");
dic.Add("2","two");
//取值
string getone=dic["1"];
}

2.键值对KeyValuePair:KeyValuePair<string,string>

因为KeyValuePair是单个的键值对对象,可以用来遍历Dictionary字典,或保存combox选择的值。

public void usekeyvaluepair()
{
foreach (KeyValuePair<string, string> item in dic)
{
string a = item.Key;
string b = item.Value;
}
}

3.哈希集合Hashtable

Hashtable是非泛型集合,所以在检索和存储值类型时通常会发生装箱与拆箱的操作。 

public void CreateHashtable()
{
Hashtable hs = new Hashtable();
hs.Add(1,"one");
hs.Add("2","two");
string a=hs[1].ToString();
string b = hs["2"].ToString();
}

Hashtable集合补充:遍历集合,可使用DictionaryEntry类(定义可设置或检索的键值对)

Hashtable hs = new Hashtable();
hs.Add(1, "one");
hs.Add("2", "two");
foreach (DictionaryEntry item in hs)
{
string a = item.Key.ToString();
string b = item.Value.ToString();
}

使用foreach遍历是不能修改值的,只能读取值,迭代变量相当于一个局部只读变量。可使用for循环修改。

KeyValuePair 和 Dictionary 的关系
1、KeyValuePair 
    a、KeyValuePair 是一个结构体(struct);
    b、KeyValuePair 只包含一个Key、Value的键值对。
2、Dictionary 
    a、Dictionary 可以简单的看作是KeyValuePair 的集合;
    b、Dictionary 可以包含多个Key、Value的键值对。

下面的代码可能会帮助更好的理解它们之间的关系:

Dictionary<int, string> myDic = new Dictionary<int, string>();  
foreach (KeyValuePair<int, string> item in myDic)  
{  
    Console.WriteLine("Key = {0}, Value = {1}", item.Key, item.Value);  
}

键值对Dictionary、KeyValuePair、Hashtable 简单使用。的更多相关文章

  1. iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用

    键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因为你可以利用字符串的方式去动态控制一个对象.其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的 ...

  2. 实体对象属性和值转为键值对Dictionary

    实体对象转为Dictionary键值对 /// <summary> /// 实体转键值对 /// </summary> /// <typeparam name=" ...

  3. 04.Dictionary字典键值对集合

    Dictionary字典键值对集合和Hashtable键值对集合的功能非常类似, 只是在声明的时候,必须为其制定值的类型. 示例代码: namespace _11.Dictionary字典集合的学习 ...

  4. Dictionary读取键值的快捷方法

    对泛型集合Dictionary<T,T> 进行读取键值是经常的操作,一般情况下,都是通过keys 和values进行键值的读取操作: eg: foreach (var item in di ...

  5. .NET 获取Get方式URL中的参数键值

    在Web开发中,我们常常会涉及到需要获取Get方式URL中的参数键值的情况,这里简单介绍三种方法: 第一种:常用的做法有使用JavaScript获取location.href后用正则表达式匹配获取此U ...

  6. C# GetHashCode、Equals函数和键值对集合的关系

    C# GetHashCode.Equals函数和键值对集合的关系 说明 HashCode:Hash码.特性:两个值,相同的的值生成的Hash肯定相同,Hash不同的值肯定不同. 下面一张图中,只有和“ ...

  7. (转)C#中键值对类型Hashtable与Dictionary比较和相关用法

    最近在使用C#中的Hashtable与Dictionary的时候,想知道其区别,通过查找网络相关博客资料,作出下列总结. Hashtable与Dictionary虽然都是作为键值对的载体,但是采用的是 ...

  8. C# 存储相同键多个值的Dictionary

    涉及到两个问题: 一.访问磁盘中文件夹.文件夹下面的文件夹 先看一下磁盘文件夹结构 C盘下面有个根文件夹SaveFile,SaveFIle下面有两个子文件夹分别为,2018.2019, 子文件下201 ...

  9. Dictionary<k,v>键值对的使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Dict ...

随机推荐

  1. ATL Thunk机制深入分析

    如果你有SDK的编程经验,就一定应该知道在创建窗口时需要指定窗口类,窗口类中的一种重要的参数就是窗口过程.任何窗口接收到的消息,都是由该窗口过程来处理. 在面向对象编程中,如果还需要开发人员来使用原始 ...

  2. ubuntu编译opencv3.1遇到的问题

    网上有很多关于编译的具体步骤,我也是按照网上的说明一步步操作的,这里主要想记录的是在安装完之后,import cv2不存在以及其他的libopencv_hdf.so.3.1等找不到的问题,如果将这样的 ...

  3. (1.11)SQL优化——mysql提示(hint)

    (1.11)mysql hint 关键词:mysql提示 1.SQL提示 (hint)是优化数据库的手段之一,使用它加入一些人为的提示来达到优化操作的目的: 举例: select sql_buffer ...

  4. 【生产问题】记还原一个很小的BAK文件,但却花了很长时间,分析过程

    [生产问题]还原一个很小的BAK文件,但却花了很长时间? 关键词:备份时事务日志太大会发生什么?还原时,事务日志太大会怎么办? 1.前提: [1.1]原库数据已经丢失,只有这个bak了 [1.2]ba ...

  5. SQL Server2008及以上 表分区操作详解

    SQL Server 表分区之水平表分区  转自:https://www.cnblogs.com/Brambling/p/6766482.html 什么是表分区? 表分区分为水平表分区和垂直表分区,水 ...

  6. MySQL无损复制(转)

    MySQL5.7新特性:lossless replication 无损复制 https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.h ...

  7. [硬件]Urg_viewer数据读取

    首先,数据读取部分开启了两个后台线程,一个负责串口的连接和测试:一个负责数据的接收. 几个基本概念: 建立连接和关闭连接. 开始记录和停止记录. 保存CSV文件. 1.查找COM端口,Urg_driv ...

  8. python的globals()

    以字典的形式返回当前位置的全局变量

  9. 116A

    #include <stdio.h> int main() { int n; int a1,a2; int min=0; int cap=0; scanf("%d",& ...

  10. python 根据字符串动态的生成变量名并且赋值

    Python 动态的创建变量 一.子符串的形式 这是在今天的一个项目中,发现需要动态的创建很多变量.每个变量对应的值的来源都相同.在网上看了些资料,研究出了这个动态创建变量的牛逼方法. 所用的方法就是 ...