键值对Dictionary、KeyValuePair、Hashtable 简单使用。
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 简单使用。的更多相关文章
- iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用
键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因为你可以利用字符串的方式去动态控制一个对象.其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的 ...
- 实体对象属性和值转为键值对Dictionary
实体对象转为Dictionary键值对 /// <summary> /// 实体转键值对 /// </summary> /// <typeparam name=" ...
- 04.Dictionary字典键值对集合
Dictionary字典键值对集合和Hashtable键值对集合的功能非常类似, 只是在声明的时候,必须为其制定值的类型. 示例代码: namespace _11.Dictionary字典集合的学习 ...
- Dictionary读取键值的快捷方法
对泛型集合Dictionary<T,T> 进行读取键值是经常的操作,一般情况下,都是通过keys 和values进行键值的读取操作: eg: foreach (var item in di ...
- .NET 获取Get方式URL中的参数键值
在Web开发中,我们常常会涉及到需要获取Get方式URL中的参数键值的情况,这里简单介绍三种方法: 第一种:常用的做法有使用JavaScript获取location.href后用正则表达式匹配获取此U ...
- C# GetHashCode、Equals函数和键值对集合的关系
C# GetHashCode.Equals函数和键值对集合的关系 说明 HashCode:Hash码.特性:两个值,相同的的值生成的Hash肯定相同,Hash不同的值肯定不同. 下面一张图中,只有和“ ...
- (转)C#中键值对类型Hashtable与Dictionary比较和相关用法
最近在使用C#中的Hashtable与Dictionary的时候,想知道其区别,通过查找网络相关博客资料,作出下列总结. Hashtable与Dictionary虽然都是作为键值对的载体,但是采用的是 ...
- C# 存储相同键多个值的Dictionary
涉及到两个问题: 一.访问磁盘中文件夹.文件夹下面的文件夹 先看一下磁盘文件夹结构 C盘下面有个根文件夹SaveFile,SaveFIle下面有两个子文件夹分别为,2018.2019, 子文件下201 ...
- Dictionary<k,v>键值对的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Dict ...
随机推荐
- java ipv4校验正则字符串
String IPV4_REGEX = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)) ...
- 20165225《Java程序设计》第九周学习总结
20165225<Java程序设计>第九周学习总结 1.视频与课本中的学习: 第十三章学习总结 URL类 URL对象包含三部分信息:协议.地址和资源 创建URL对象两种方法: public ...
- 接口测试工具-Jmeter使用笔记(二:GET/POST请求参数填写)
举例来说 我的被测系统API的http请求涉及到GET/POST/PUT/DELETE四种.请求传参可分为两种: GET请求 http://请求路径/Ecs-duHc0U4E #该请求参数“Ecs-d ...
- insert select带来的问题
当使用 insert...select...进行记录的插入时,如果select的表是innodb类型的,不论insert的表是什么类型的表,都会对select的表的纪录进行锁定.对于那些从oracle ...
- MySQL innodb_flush_method 【转载】
innodb_flush_method这个参数控制着innodb数据文件及redo log的打开.刷写模式,对于这个参数,文档上是这样描述的: 有三个值:fdatasync(默认),O_DSYNC,O ...
- MySQL crash-safe replication【转载】
本文来自david大神的博客,innodb技术内幕的作者. http://insidemysql.blog.163.com/blog/static/202834042201385190333/ MyS ...
- laravel项目thinksns+安装pc前端页面
前面我们说了laravel项目ThinkSNS+安装,现在要安装给用户看的页面,方便他们进行一些操作,比如发表文字/提问之类,这个已经模块化了,用composer就可以完成.命令行代码如下(之前是co ...
- 微星笔记本每次都进bios
解决方法 bios中更改启动模式,要更改为LEGACY
- jvm - 类的初始化过程
我们知道,我们写的java代码称为源码,想要能够被jvm执行首先需要编译成.class文件,那么编译完到使用又都经理的哪些阶段呢?主要分为以下三个阶段: 加载:查找并加载类的二进制数据(.class文 ...
- Vuex 页面刷新后store保存的数据会丢失 取cookie值
在store.js中 export default new vuex.Store({ // 首先声明一个状态 state state:{ pcid: '', postList: [], } //更新状 ...