<1>C#中的“键值对”(Key-Value)快乐体验
首先,Dictionary类,key唯一,values不唯一。
例子:在listbox中添加items,然后每单击一个item,就产生相应的相应。我以电视列表为例
代码
除了可以遍历所有基本类型的key,value,dictionary外,还可以使用自定义类型,如类,结构等,所以使用起来特别方便。
代码
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
Dictionary<int, mycls> dic = new Dictionary<int, mycls>();
public Form1()
{
InitializeComponent();
add();
}
public class mycls
{
public string name;
public string gender;
public mycls(string Name, string Gender)
{
name = Name;
gender = Gender;
}
}
public void add()
{
mycls newcls = new mycls("Lixing","M");
for (int i = 0; i < 2;i++ )
dic.Add(i,newcls);
foreach (var lists in dic.Values)
listBox1.Items.Add(lists.name);
}
}
}
接着是Hashtable类,其功能和类型方法和Dictionary都是大致相同的。对于值类型,特定类型(不包括object)的 Dictionary 的性能优于 Hashtable,这是因为 Hashtable 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和取消装箱操作(拆箱)。
另外值得注意的是:一般情况下,Hashtable类的构造函数是0参数或者只制定容量,并不指明key和value的类型,因此,在后面函数中进行遍历的时候不能像Dictionary类那样使用变量var,而要主动制定变量的类型!
代码