星彩网app下载:中Dictionary的用法及用途实例

Dictionary<string, string>是一个泛型,什么是泛型?

一、Dictionary<string, string>是贰个泛型

使用泛型
上边是用泛型来重写上边的栈,用贰个通用的数量类型T来作为三个占位符,等待在实例化时用叁个实际上的花色来替代。让大家来探视泛型的威力:



public class Stack<T>

    {

        private T[] m_item;

        public T Pop(){...}

        public void Push(T item){...}

        public Stack(int i)

        {

            this.m_item = new T[i];

        }

}

他自家有集聚的效用有时候能够把它作为数组

 

他的构造是这么的:Dictionary<[key], [value]>

本条类和object完成的类有完全不一样的区分:

她的特征是存入对象是亟需与[key]值一一对应的存入该泛型

1.       他是体系安全的。实例化了int类型的栈,就不能够管理string类型的数量,其余数据类型也同样。

通过某三个自然的[key]去找到呼应的值

2.       无需装箱和折箱。那个类在实例化时,根据所盛传的数据类型生开销地代码,本地代码数据类型已规定,所以不必装箱和折箱。

举例:

3.       没有要求类型转变。

//实例化对象

 

Dictionary<int, string> dic = new Dictionary<int, string>();

 

//对象照拂增加

 

dic.Add(1, "one");

 

dic.Add(2, "two");

她的组织是如此的:Dictionary<[key], [value]>

dic.Add(3, "one");

 

//提取元素的主意

她的风味是存入对象是内需与[key]值一一对应的存入该泛型

string a = dic[1];

 

string b = dic[2];

因此某一个自然的[key]去找到相应的值

string c = dic[3];

 

//1、2、3是键,分别对应“one”“two”“one”

比方:

//上面代码中分别把值赋给了a,b,c

 

//注意,键相当于找到对应值的独一标记,所以不可能重新

//实例化对象

Dictionary<int, string> dic = new Dictionary<int, string>();

//对象打点添加

dic.Add(1, "one");

dic.Add(2, "two");

dic.Add(3, "one");

//提取元素的方法

string a = dic[1];

string b = dic[2];

string c = dic[3];

//通过Key查找元素

if(myDictionary.ContainsKey(1))

{

Console.WriteLine("Key:{0},Value:{1}","1", myDictionary[1]);

 }

//通过KeyValuePair遍历元素

foreach(KeyValuePair<int,string>kvp in myDictionary)

{

Console.WriteLine("Key = {0}, Value = {1}",kvp.Key, kvp.Value);

}

//仅遍历键 Keys 属性

Dictionary<int,string>.KeyCollection keyCol=myDictionary.Keys;

foreach(intkeyinkeyCol)

{

Console.WriteLine("Key = {0}", key);

}

//仅遍历值 Valus属性

Dictionary<int,string>.ValueCollection valueCol=myDictionary.Values;

foreach(stringvalueinvalueCol)

{

Console.WriteLine("Value = {0}", value);

}

//通过Remove方法移除指定的键值

myDictionary.Remove(1);

if(myDictionary.ContainsKey(1))

{

  Console.WriteLine("Key:{0},Value:{1}","1", myDictionary[1]);

}

else

{

Console.WriteLine("不存在 Key : 1"); 

 }

//可是值能够另行

 


其它常见属性和方法的说明:

  Comparer:           获取用于确定字典中的键是否相等的 IEqualityComparer。

  Count:                  获取包含在 Dictionary中的键/值对的数目。

  Item:                    获取或设置与指定的键相关联的值。

  Keys:                   获取包含 Dictionary中的键的集合。

  Values:                获取包含 Dictionary中的值的集合。

  Add:                    将指定的键和值添加到字典中。

  Clear:                  从 Dictionary中移除所有的键和值。

  ContainsKey:      确定 Dictionary是否包含指定的键。

  ContainsValue:   确定 Dictionary是否包含特定值。             

  GetEnumerator:  返回循环访问 Dictionary的枚举数。

  GetType:             获取当前实例的 Type。 (从 Object 继承。)

  Remove:             从 Dictionary中移除所指定的键的值。

  ToString:             返回表示当前 Object的 String。 (从 Object 继承。)

  TryGetValue:      获取与指定的键相关联的值。

  

二、c# 对dictionary类举行排序用哪些接口实现

Dictionary的骨干用法。假若

假定使用.Net Framework 3.5的话,事情就相当粗略了。呵呵。

急需:现在要导入一堆数量,那一个多少中有二个可以称作集团的字段是大家数据Curry曾经存在了的,这段时间大家须要把各类集团名字转为ID后才存入数据库。

假设不是的话,还是要好写排序吧。

浅析:每导一笔记录的时候,就把要把公司的名字转为企业的ID,这些不应该每趟都询问一下数据库的,因为这太耗数据库的性质了。

星彩网app下载 1星彩网app下载 2View Code

缓和方案:在业务层里先把全体的营业所名称及相应的营业所ID一回性读抽出来,然后寄存到多少个Key和Value的键值对里,然后完毕只要把多少个商家的名字传进去,就足以博得此公司对应的商铺ID,仿佛查字典同样。对,我们得以行使字典Dictionary操作这么些数据。

 1 using System; 
 2 
 3  using System.Collections.Generic; 
 4 
 5  using System.Text; 
 6 
 7  using System.Linq; 
 8 
 9 namespace DictionarySorting 
10 
11 { 
12 
13 class Program 
14 
15 { 
16 
17 static void Main(string[] args) 
18 
19 { 
20 
21 Dictionary<int, string> dic = new Dictionary<int, string>(); 
22 
23 dic.Add(1, "HaHa"); 
24 
25 dic.Add(5, "HoHo"); 
26 
27 dic.Add(3, "HeHe"); 
28 
29 dic.Add(2, "HiHi"); 
30 
31 dic.Add(4, "HuHu"); 
32 
33 var result = from pair in dic orderby pair.Key select pair; 
34 
35 foreach (KeyValuePair<int, string> pair in result) 
36 
37 { 
38 
39 Console.WriteLine("Key:{0}, Value:{1}", pair.Key, pair.Value); 
40 
41 } 
42 
43 Console.ReadKey(); 
44 
45 } 
46 
47 } 
48 
49 } 
50 
51 【执行结果】 
52 
53 Key:1, Value:HaHa 
54 
55 Key:2, Value:HiHi 
56 
57 Key:3, Value:HeHe 
58 
59 Key:4, Value:HuHu 
60 
61 Key:5, Value:HoHo

示范:SetKeyValue()方法相应于从数据Curry读取到了厂家音信。

================================================================================

 

三、Dictionary的主导用法。如若

/// <summary>
/// 定义Key为string类型,Value为int类型的一个Dictionary
/// </summary>
/// <returns></returns>
protected Dictionary<string, int> SetKeyValue()
{
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("公司1", 1);
dic.Add("公司2", 2);
dic.Add("公司3", 3);
dic.Add("公司4", 4);
return dic;
}


/// <summary>
/// 得到根据指定的Key行到Value
/// </summary>
protected void GetKeyValue()
{
Dictionary<string, int> myDictionary = SetKeyValue();
//测试得到公司2的值
int directorValue = myDictionary["公司2"];
Response.Write("公司2的value是:"   directorValue.ToString());
}

供给:以后要导入一堆数量,这么些数量中有多个誉为公司的字段是我们数据Curry早就存在了的,如今大家必要把种种公司名字转为ID后才存入数据库。

 

深入分析:每导一笔记录的时候,就把要把公司的名字转为集团的ID,那么些不该每一次都询问一下数据库的,因为那太耗数据库的性质了。

技术方案:在业务层里先把具备的店堂名称及相应的店堂ID贰次性读收取来,然后寄放到一个Key和Value的键值对里,然后实现只要把叁个商场的名字传进去,就能够收获此集团对应的营业所ID,如同查字典同样。对,大家能够使用字典Dictionary操作那些数据。

演示:SetKeyValue()方法相应于从数据Curry读取到了合营社新闻。

星彩网app下载 3星彩网app下载 4View Code

 1 /// <summary>
 2 
 3 /// 定义Key为string类型,Value为int类型的一个Dictionary
 4 
 5 /// </summary>
 6 
 7 /// <returns></returns>
 8 
 9 protected Dictionary<string, int> SetKeyValue()
10 
11 {
12 
13 Dictionary<string, int> dic = new Dictionary<string, int>();
14 
15 dic.Add("公司1", 1);
16 
17 dic.Add("公司2", 2);
18 
19 dic.Add("公司3", 3);
20 
21 dic.Add("公司4", 4);
22 
23 return dic;
24 
25 }
26 
27 /// <summary>
28 
29 /// 得到根据指定的Key行到Value
30 
31 /// </summary>
32 
33 protected void GetKeyValue()
34 
35 {
36 
37 Dictionary<string, int> myDictionary = SetKeyValue();
38 
39 //测试得到公司2的值
40 
41 int directorValue = myDictionary["公司2"];
42 
43 Response.Write("公司2的value是:"   directorValue.ToString());
44 
45 }

本文由星彩网app下载发布于计算机编程,转载请注明出处:星彩网app下载:中Dictionary的用法及用途实例

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。