网上看到的,记录下来,供参考,备忘

Dictionary list = new Dictionary();

list.Add("d", 1);//3.0以上版本

foreach (var item inlist)

{

Console.WriteLine(item.Key+item.Value);

}//KeyValuePair

foreach (KeyValuePair kv inlist)

{

Console.WriteLine(kv.Key+kv.Value);

}//通过键的集合取

foreach (string key inlist.Keys)

{

Console.WriteLine(key+list[key]);

}//直接取值

foreach (int val inlist.Values)

{

Console.WriteLine(val);

}//非要采用for的方法也可

List test = new List(list.Keys);for (int i = 0; i < list.Count; i++)

{

Console.WriteLine(test[i]+list[test[i]]);

}

Dictionary( TKey , TValue )

表示键和值的集合。

Dictionary( TKey, TValue) 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary( TKey, TValue) 类是作为一个哈希表来实现的。(检索速度取决于为 TKey 指定的类型的哈希算法的质量。)

只要对象用作 Dictionary( TKey, TValue) 中的键,它就不能以任何影响其哈希值的方式更改。使用字典的相等比较器比较时,Dictionary( TKey, TValue) 中的任何键都必须是唯一的。键不能为 null 。 但是如果值类型 TValue 为引用类型,该值则可以为空。

Dictionary( TKey, TValue) 需要一个相等实现来确定键是否相等。可以使用一个接受 comparer 参数的构造函数来指定 IEqualityComparer( T) )泛型接口的实现;如果不指定实现,则使用默认的泛型相等比较器 EqualityComparer( T) ) . Default 。如果类型 TKey 实现 System. IEquatable ) > )泛型接口,则默认相等比较器会使用该实现。

Dictionary( TKey, TValue) 的容量是 Dictionary( TKey, TValue) 可以包含的元素数。当向 Dictionary( TKey, TValue) 中添加元素时,将通过重新分配内部数组来根据需要自动增大容量。

对于枚举而言,字典中的每一项都被视为一个表示值及其键的 KeyValuePair( TKey, TValue)结构进行处理。项返回的顺序未定义。

C# 语言的 foreach 语句(在 C++ 中为 for each ,在 Visual Basic 中为 For Each )需要集合中每个元素的类型。由于 Dictionary( TKey, TValue) 是键和值的集合,因此元素类型并非键类型或值类型。相反,元素类型是键类型和值类型的 KeyValuePair( TKey, TValue)。例如:

此类型的公共静态(在 Visual Basic 中为 Shared )成员是线程安全的。但不能保证任何实例成员是线程安全的。

只要不修改该集合,Dictionary( TKey, TValue) 就可以同时支持多个阅读器。即便如此,从头到尾对一个集合进行枚举本质上并不是一个线程安全的过程。当出现枚举与写访问互相争用这种极少发生的情况时,必须在整个枚举过程中锁定集合。若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。

///summary ///通过DictionaryK,V传递参数 summary ///paramname=sql/param ///paramname=parms/param ///returns/returns public static SqlDataReaderExecuteReader( string sql,Dictionary string , string parms) { SqlDataReadersqlReader= null ;

///

///通过Dictionary传递参数///

///

///

///

public static SqlDataReader ExecuteReader(string sql, Dictionaryparms)

{

SqlDataReader sqlReader= null;

SqlConnection sqlConn= newSqlConnection(conStr);

SqlCommand sqlCmd= newSqlCommand(sql, sqlConn);foreach (string key inparms.Keys)

{

sqlCmd.Parameters.Add("@" +key, parms[key]);

}

sqlConn.Open();

sqlReader=sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);returnsqlReader;

}

调用如下:=============

public UserRole GetRoleByID(introleId)

{string sql = string.Format("select id roleid,rolename from userrole where id=@ID",roleId);

Dictionary sqlParams = new Dictionary();

sqlParams.Add("ID",roleId.ToString());

UserRole ur=null;using (SqlDataReader sqlReader =DBHelper.ExecuteReader(sql,sqlParams))

{while(sqlReader.Read())

{

ur= new UserRole((int)sqlReader["roleid"], sqlReader["rolename"].ToString());

}

sqlReader.Close();

}returnur;

}

java dictionary遍历_C# Dictionary 的几种遍历方法相关推荐

  1. 有向图的广度优先遍历_图的两种遍历方式

    1 引言 遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次. 在二叉树基础中,介绍了对于树的遍历.树的遍历是指从根节点出发,按照一定的访问规则,依次访 ...

  2. Java针对ArrayList自定义排序的2种实现方法

    这篇文章主要介绍了Java针对ArrayList自定义排序的2种实现方法,结合实例形式总结分析了Java操作ArrayList自定义排序的原理与相关实现技巧,下面就和动力节点java学院小编一起来看看 ...

  3. java实现二叉树的构建以及3种遍历方法

    目录: 1.把一个数组的值赋值给一颗二叉树 2.具体代码 1.树的构建方法 package tree; import java.util.LinkedList; import java.util.Li ...

  4. Java实现二叉树的创建与四种遍历方式(前,中,后,层)

    文章目录 1.二叉树节点的创建 2.二叉树的先序遍历 3.二叉树的中序遍历 4.二叉树的后序遍历 5.二叉树的层序遍历

  5. Java中关于Arrays.sort的两种重载方法的理解

    前言 在java中重载排序方法的方法目前有两种,一种是实现Comparable接口的compareTo方法,还有一种是用比较器(comparator) 作为参数,其中比较器是实现了Comparator ...

  6. Java Map集合常用API及3种遍历方式

    1.map的常用API map是双列集合的顶层接口,是所有的双列集合都可以继承使用 2.使用Map集合 //1.创建Map集合的对象Map<String, String> m = new ...

  7. java克隆(clone)的两种实现方法

    1概念 由java API文档可知: clone 属于 java.long.Object的一个方法 protected Object clone() throws CloneNotSupportedE ...

  8. java防止暴力破解用户名的5种常见方法

    系统的账号密码如果被破解了,对我们的整个系统都是巨大隐患. 通常情况下,我们会使用以下方法阻止黑客破解账号密码: 1.网站管理入口禁止使用弱口令帐号,建议使用复杂口令,比如:大小写字母与数字的组合,口 ...

  9. 根据树的两种遍历序列求第三种遍历序列

    只知道先序序列和后序序列是无法求出唯一的树,所以不做讨论. #include<iostream> #include<cstdio> #include<cstring> ...

最新文章

  1. 带你了解DDoS攻击的原理,让你轻松学会DDoS攻击原理及防护措施
  2. 删除所有的视图,存储过程
  3. 【CodeForces - 616C】The Labyrinth(bfs,并查集,STLset)
  4. linux 启动db2 服务器,Linux系统设置DB2等服务开机启动的过程
  5. matlab进行特征缩放,机器学习中(Feature Scaling)特征缩放处理的matlab实现方式
  6. npm notice created a lockfile as package-lock.json. You should commit this file.
  7. 黑马day16 aptana插件的安装
  8. 文件储存php源码,求php后台代码 保存图片文件
  9. 机器人动力学与控制学习笔记(二)————机器人动力学建模
  10. LayUI动态添加table表格
  11. short java_java基本数据类型short的使用(23)
  12. windows server中opencv运行过程中MF.dll/MFReadWrite.dll/MFPlat.DLL文件丢失问题解决
  13. Flink之Source
  14. P****cms简单去版权,不逆向dll,只是简单的隐藏掉而已
  15. 计算机网络技术 李晓峰,计算机网络技术3(吉林大学李晓峰).ppt
  16. Java-for循环打印1-100奇数
  17. 计算机科学排名清华第一,最新全球计算机科学排名:清华力压CMU排名第一
  18. 高通平台上的AMSS(Modem端) windows环境搭建
  19. LOWORD, HIWORD, LOBYTE, HIBYTE
  20. X2000 halley5开发板,烧写uboot,kernel,文件系统到开发板

热门文章

  1. “Paper + Code”加量豪华套餐 | PaperDaily #04
  2. 用户解锁不存在_解锁手机有6种方法,这些常识你知道吗?小白购机指南——解锁篇...
  3. Greenplum【问题记录 01】资源组配置后GPCC用户无法认证登录
  4. 计算机360浏览器的大小,360安全浏览器8.1电脑正式版
  5. 这都2021年了,还不会Feign性能调优?Feign性能调优之gzip压缩实现-自娱自乐篇
  6. Ⅰ:zookeeper的单机安装 - 详细教程
  7. spring boot实现导出数据到excel
  8. TensorFlow——在web.py、Django环境下TensorFlow(Keras、tf.keras)加载和使用多模型失败解决方案
  9. Typora——恢复未保存文件解决方案
  10. Codeforces 1196E Connected Component on a Chessboard