Hashtable:是一种集合,存储的元素是一个键值对(key-value-pair)
键值对:是有两个值来组成,一个是键(Key),一个是值(Value)
Hashtable中键值对的特点:键和值一一对应,不允许只有Key,没有Value;也不允许只有Value,没有Key。
Hashtable中不允许出现相同的键,但是允许出现相同的值。
Hashtable中的元素是按照Key的Hash编码来进行排序的,所以,Hashtable中的元素的顺序和添加的顺序可能不一样。
Dictionary<>:类似于Hashtable,存储的元素也是键值对,但是其具有泛型。
以下代码是常用语法及操作。
Hashtable

using System;
using System.Collections;
//Hashtable:是一种集合,存储的元素是一个键值对(key-value-pair)
//键值对:是有两个值来组成,一个是键(Key),一个是值(Value)
//Hashtable中键值对的特点:键和值一一对应,不允许只有Key,没有Value;也不允许只有Value,没有Key。
//Hashtable中不允许出现相同的键,但是允许出现相同的值。
//Hashtable中的元素是按照Key的Hash编码来进行排序的,所以,Hashtable中的元素的顺序和添加的顺序可能不一样。
public class Program
{
public static void Main(string[] args)
{
//实例化一个HashTable
Hashtable table = new Hashtable();
//获取Hashtable中所有的Key
ICollection keys = table.Keys;
//遍历刚刚获取到的所有的Key
foreach (object key in keys)
{
//通过Key来获取Value
Console.WriteLine($"{key}={table[key]}");
}
}
public static void AddOperation(Hashtable table)
{
//添加的是键值对
table.Add("name", "zhangsan");
table.Add("age", 10);
table.Add("gender", "male");
}
public static void RemoveOperation(Hashtable table)
{
//通过Key来删除一个键值对
table.Remove("age");
}
public static void UpdateOperation(Hashtable table)
{
//通过键来修改值
table["name"] = "laowang";
//还可以通过这样的方式来进行添加操作
table["height"] = 173;
}
public static void SearchOperation(Hashtable table)
{
//Hashtable中存储的元素类型是DictionaryEntry
foreach (DictionaryEntry entry in table)
{
//获取一个键值对中的键
object key = entry.Key;
//获取一个键值对中的值
object value = entry.Value;
Console.WriteLine($"{key}={value}");
}
}
public static void OtherOperation(Hashtable table)
{
//获取HashTable中的键值对的数目
int Count = table.Count;
//清空集合
table.Clear();
//判断Hashtable中是否包含了指定的键
bool result = table.Contains("age");
}
}
}

Dictionary

using System;
using System.Collections.Generic;
//Dictionary<>:类似于Hashtable,存储的元素也是键值对
public class Program
{
public static void Main(string[] args)
{
//实例化一个Dictionary对象
//Dictionary需要去指定Key和Value的类型
Dictionary<string, string> dic = new Dictionary<string, string>();
}
public static void AddOperation(Dictionary<string, string> dic)
{
dic.Add("name", "xiaohong");
}
public static void RemoveOpeation(Dictionary<string,string> dic)
{
dic.Remove("age");
}
public static void UpdateOperation(Dictionary<string,string> dic)
{
dic["name"] = "xiaobai";
}
public static void SearchOperation(Dictionary<string,string> dic)
{
//Dictionary<>中的元素类型是KeyValuePair<>
foreach (KeyValuePair<string,string> pair in dic)
{
string key = pair.Key;
string value = pair.Value;
Console.WriteLine($"{key}={value}");
}

ICollection<string> keys = dic.Keys;
foreach (string key in keys)
{
//通过key获取Value
string value = dic[key];
Console.WriteLine($"{key}={value}");
}
}
}