一、索引器

索引器类似于属性,不同之处在于它们的get访问器采用参数。要声明类或结构上的索引器,使用this关键字。

示例:

 
索引器示例代码 /// <summary>
/// 存储星期几的类。声明了一个get访问器,它接受字符串,并返回相应的整数
/// </summary>
public class 星期
{
    public string[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };     //索引器 它接受星期几的字符串,将它作为索引index
    public int this[string day]
    {
       //get访问器 并返回相应的整数
        get
       {
            int i = 0;             foreach (var item in weeks)
            {
                if (item == day)
                {
                    return i;
                }
                i++;
            }             //没找到返回-1
            return -1;
        }
    }
}  

二、哈希表Hashtable

Hastable是哈希表的实现,能根据关键字取关键值,这key的类型是object, value的类型也是object。

在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);

在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);

从哈希表中移除所有元素:                  HashtableObject.Clear();

判断哈希表是否包含特定键key:          HashtableObject.Contains(key);

遍历Hashtable对象的两种方法:

由于Hashtable每个元素都是一个键/值对,因此元素类型既不是键的类型,也不是值的类型,而是DictionaryEntry类型。

 

Hashtable示例代码

//方法一
foreach (System.Collections.DictionaryEntry de in myHashtable)
{
    //注意HastTable内存储的默认类型是object,需要进行转换才可以输出
    Console.WriteLine(de.Key.ToString());
    Console.WriteLine(de.Value.ToString());
} //方法二
System.Collections.IDictionaryEnumerator enumerator = myHashtable.GetEnumerator(); while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Key);       // Hashtable关健字
    Console.WriteLine(enumerator.Value);      // Hashtable值
}  

三、字典Dictionary

Dictionary<Tkey,Tvalue>是Hastbale的泛型实现。

 
//遍历键
foreach (string key in myDictionary.Keys)
{
    //遍历某键的值
    foreach (string val in myDictionary[key])
    {     }
}
 

由于 Dictionary 是键和值的集合,因此元素类型并非键类型或值类型。相反,元素类型是键类型和值类型的 KeyValuePair。

 

字典遍历示例

foreach (KeyValuePair<string, string> kvp in myDictionary)
{
    string key = kvp.Key;//key包含了字典里的键
    for (int i = 0; i < kvp.Value.Count; i++)
    {
        Response.Write(kvp.Value[i]);
    }
}  

示例:

 

代码

//定义一个<string,int>的Dictionary,让它的值进行添加(也可以用Add方法)
Dictionary<string, int> dic = new Dictionary<string, int>();

//添加两个键为"成绩1","成绩2";并为它们的值赋为0
dic["成绩1"] = 0;
dic["成绩2"] = 0;

// 把这两个值分别加1
dic["成绩1"]++;
dic["成绩2"]++;

索引器、哈希表Hashtabl、字典Dictionary(转)的更多相关文章

  1. 哈希表和字典List和Ilist和array和arraylist的应用

    string x = string.Empty; string y = string.Empty;                Hashtable ht = new Hashtable();     ...

  2. C#集合类:动态数组、队列、栈、哈希表、字典(转)

    1.动态数组:ArrayList 主要方法:Add.AddRange.RemoveAt.Remove 2.队列:Queue 主要方法:Enqueue入队列.Dequeue出队列.Peek返回Queue ...

  3. C#集合类:动态数组、队列、栈、哈希表、字典

    1.动态数组:ArrayList 主要方法:Add.AddRange.RemoveAt.Remove 2.队列:Queue 主要方法:Enqueue入队列.Dequeue出队列.Peek返回Queue ...

  4. .net 哈希表和字典的基本用法

    哈希表 传送门:https://www.cnblogs.com/xpvincent/archive/2013/01/15/2860841.html using System; using System ...

  5. 数据结构图解(递归,二分,AVL,红黑树,伸展树,哈希表,字典树,B树,B+树)

    递归反转 二分查找 AVL树 AVL简单的理解,如图所示,底部节点为1,不断往上到根节点,数字不断累加. 观察每个节点数字,随意选个节点A,会发现A节点的左子树节点或右子树节点末尾,数到A节点距离之差 ...

  6. 使用python实现哈希表、字典、集合

    哈希表 哈希表(Hash Table, 又称为散列表),是一种线性表的存储结构.哈希表由一个直接寻址表和一个哈希函数组成.哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标. 简单哈希函数: ...

  7. repeater绑定数组、哈希表、字典 ArrayList/HashTable,Dictionary为datasource

    原文发布时间为:2009-11-19 -- 来源于本人的百度文章 [由搬家工具导入] repeater绑定数组、哈希表、字典datasource为ArrayList/HashTable,Diction ...

  8. C#哈希表(HashTable)和Dictionary比较

    添加数据时Hashtable快.频繁调用数据时Dictionary快. Dictionary<K,V>是泛型的,当K或V是值类型时,其速度远远超过Hashtable. using Syst ...

  9. Redis原理再学习04:数据结构-哈希表hash表(dict字典)

    哈希函数简介 哈希函数(hash function),又叫散列函数,哈希算法.散列函数把数据"压缩"成摘要,有的也叫"指纹",它使数据量变小且数据格式大小也固定 ...

随机推荐

  1. Google自己的下拉刷新组件SwipeRefreshLayout

    SwipeRefreshLayout SwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support librar ...

  2. python特殊函数 __call__()

    __call__ 在Python中,函数其实是一个对象: >>> f = abs >>> f.__name__ 'abs' >>> f(-123) ...

  3. js实现上传图片及时预览

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 比较和排序(IComparable和IComparer以及它们的泛型实现)

    本文摘要: 1:比较和排序的概念: 2:IComparable和IComparer: 3:IComparable和IComparer的泛型实现IComparable<T>和ICompare ...

  5. Swift3.0语言教程使用占位符格式创建和初始化字符串

    Swift3.0语言教程使用占位符格式创建和初始化字符串 Swift3.0语言教程使用占位符格式创建和初始化字符串在很多的编程语言中都存在占位符,占位符就是为指定的内容占留一个位置.此功能一般在开发者 ...

  6. 【Clr in c#】泛型

    使用泛型的好处是“代码重用”,极大的提高了开发效率,泛型为开发者提供了以下优势: 1,源代码保护  算法的源代码不需要提供给使用泛型算法的开发人员,使用c++模板的泛型技术需要提供.(目前c++模板的 ...

  7. [转]走向视网膜(Retina)的Web时代

    转载出处:http://www.w3cplus.com/css/towards-retina-web.html 维基百科将Retina译为“视网膜”."Retina"一词,原意是“ ...

  8. javascript选取文档元素

    用指定的id属性 用指定的name属性 用指定的标签名字 用指定的CSS类 匹配指定的CSS选择器 通过ID选取元素 var section1 = document.getElementById(&q ...

  9. 每天一个Linux命令---tcpdump

    用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头” ...

  10. sublime注释插件与javascript注释规范

    前言 代码中注释是不可少的,即使是自己写的代码,过了一段时间之后再重看,如果没有注释记录的话,可能会想不到当初是这样实现的,尤其是在业务逻辑比较复杂的项目,注释变得尤为重要.怎么优雅的写有用的注释呢? ...