中Dictionary的用法及用途实例,是1个泛型使用验证

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

1、Dictionary<string, string>是多个泛型

Dictionary<string, string>是二个泛型 

 

接纳泛型
上边是用泛型来重写上面包车型大巴栈,用三个通用的数额类型T来作为1个占位符,等待在实例化时用贰个事实上的项目来代替。让大家来看望泛型的威力:



她自个儿有汇集的效劳有时候能够把它看成数组 

  

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]> 

 Dictionary<string, string>是一个泛型

 

他的布局是那般的:Dictionary<[key], [value]>

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

她本人有汇集的功效有时候能够把它看成数组

其壹类和object完结的类有一齐差别的分别:

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

通过某一个必然的[中Dictionary的用法及用途实例,是1个泛型使用验证。key]去找到相应的值 

他的布局是那样的:Dictionary<[key], [value]>

壹.      
他是项目安全的。实例化了int类型的栈,就不可能处理string类型的数码,其余数据类型也壹律。

透过某一个自然的[key]去找到呼应的值

举个例子: 

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

二.      
无需装箱和折箱。那几个类在实例化时,根据所传诵的数据类型生耗费地代码,本地代码数据类型已规定,所以无需装箱和折箱。

举个例子:

//实例化对象 

经过某2个自然的[key]去找到相应的值

叁.       无需类型转换。

//实例化对象

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

举个例证:

 

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

//对象打点添加 

//实例化对象

 

//对象打点添加

dic.Add(1, “one”); 

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

 

dic.Add(1, “one”);

dic.Add(2, “two”); 

//对象打点添加

 

dic.Add(2, “two”);

dic.Add(3, “one”); 

dic.Add(1, “one”);

他的结构是那样的:Dictionary<[key], [value]>

dic.Add(3, “one”);

//提取成分的秘籍 

dic.Add(2, “two”);

 

//提取成分的措施

string a = dic[1]; 

dic.Add(3, “one”);

她的特性是存入对象是索要与[key]值一1对应的存入该泛型

string a = dic[1];

string b = dic[2]; 

//提取元素的办法

 

string b = dic[2];

string c = dic[3]; 

string a = dic[1];

由此某三个自然的[key]去找到相应的值

string c = dic[3];

//一、贰、三是键,分别对应“one”“two”“one” 

string b = dic[2];

 

//一、二、3是键,分别对应“one”“two”“one”

//下面代码中分头把值赋给了a,b,c 

string c = dic[3];

举个例证:

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

//注意,键约等于找到对应值的绝无仅有标识,所以无法重复 

//一、二、三是键,分别对应“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"); 

 }

//然而值能够重复

如果你还看不懂小编最终给您举二个伊始的事例 

//注意,键相当于找到对应值的唯一标识,所以不能够重新

 


有一缸米,你想在在每一粒上都刻上标记,不重复,相当于“键”当您找的时候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:      获取与指定的键相关联的值。


尽管你还看不懂作者最后给您举1个早先的事例

  

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

c# 对dictionary类进行排序用如何接口达成

有壹缸米,你想在在每壹粒上都刻上标记,不另行,约等于“键”当你找的时候1壹对应不会找错,那就是这些泛型的键的-成效,而米可以同样,小编的意味你领悟了呢?

Dictionary的主导用法。假使

倘诺使用.Net Framework 三.五的话,事情就很简短了。呵呵。

如若使用.Net Framework 三.伍的话,事情就很简短了。呵呵。 


必要:以往要导入一批数量,这几个数量中有1个称作集团的字段是我们数据Curry早就存在了的,近日大家须要把各类集团名字转为ID后才存入数据库。

假使不是的话,依旧友好写排序吧。

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

c# 对dictionary类举行排序用什么接口达成

剖析:每导一笔记录的时候,就把要把专营商的名字转为公司的ID,那么些不应有每一趟都询问一下数据库的,因为这太耗数据库的特性了。

美高梅开户网址 1美高梅开户网址 2View Code

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

只要使用.Net Framework 三.伍的话,事情就很不难了。呵呵。

消除方案:在业务层里先把持有的店铺名称及相应的商行ID壹回性读取出来,然后存放到三个Key和Value的键值对里,然后落成只要把多少个集团的名字传进去,就能够赢得此集团对应的店堂ID,就好像查字典1样。对,我们能够动用字典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读取到了信用社音信。

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

1 Key:1, Value:HaHa 
2 
3 Key:2, Value:HiHi 
4 
5 Key:3, Value:HeHe 
6 
7 Key:4, Value:HuHu 
8 
9 Key:5, Value:HoHo

using System;

 

叁、Dictionary的主干用法。若是

Dictionary的中坚用法。假使

using System.Collections.Generic;

/// <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后才存入数据库。

using System.Text;

 

浅析:每导一笔记录的时候,就把要把集团的名字转为集团的ID,这一个不该每便都询问一下数据库的,因为那太耗数据库的习性了。

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

using System.Linq;

焚林而猎方案:在业务层里先把具有的商行名称及相应的商号ID二回性读取出来,然后存放到二个Key和Value的键值对里,然后完结只要把三个供销合作社的名字传进去,就足以得到此公司相应的小卖部ID,仿佛查字典一样。对,大家得以选取字典Dictionary操作这么些数据。

竭泽而渔方案:在业务层里先把拥有的店铺名称及相应的商家ID二遍性读取出来,然后存放到一个Key和Value的键值对里,然后完毕只要把二个供销合作社的名字传进去,就足以收获此公司相应的店堂ID,就好像查字典一样。对,大家得以接纳字典Dictionary操作那么些数据。

namespace DictionarySorting

演示:SetKeyValue()方法相应于从数据Curry读取到了铺面音讯。

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

{

美高梅开户网址 3美高梅开户网址 4View Code

 1 /// <summary>
 2 /// 定义Key为string类型,Value为int类型的一个Dictionary
 3 /// </summary>
 4 /// <returns></returns>
 5 protected Dictionary<string, int> SetKeyValue()
 6 {
 7 Dictionary<string, int> dic = new Dictionary<string, int>();
 8 dic.Add("公司1", 1);
 9 dic.Add("公司2", 2);
10 dic.Add("公司3", 3);
11 dic.Add("公司4", 4);
12 return dic;
13 }
14 
15 
16 /// <summary>
17 /// 得到根据指定的Key行到Value
18 /// </summary>
19 protected void GetKeyValue()
20 {
21 Dictionary<string, int> myDictionary = SetKeyValue();
22 //测试得到公司2的值
23 int directorValue = myDictionary["公司2"];
24 Response.Write("公司2的value是:" + directorValue.ToString());
25 }

class Program

 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 }

{

static void Main(string[] args)

{

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

dic.Add(1, “HaHa”);

dic.Add(5, “HoHo”);

dic.Add(3, “HeHe”);

dic.Add(2, “HiHi”);

dic.Add(4, “HuHu”);

var result = from pair in dic orderby pair.Key select pair;

foreach (KeyValuePair<int, string> pair in result)

{

Console.WriteLine(“Key:{0}, Value:{1}”, pair.Key, pair.Value);

}

Console.ReadKey();

}

}

}

【执行结果】

Key:1, Value:HaHa

Key:2, Value:HiHi

Key:3, Value:HeHe

Key:4, Value:HuHu

Key:5, Value:HoHo

Dictionary的中坚用法。即使

急需:以往要导入一群数量,那几个数量中有一个叫做公司的字段是大家数据Curry曾经存在了的,最近大家需求把各类集团名字转为ID后才存入数据库。

浅析:每导一笔记录的时候,就把要把商家的名字转为集团的ID,这些不应有每趟都询问一下数据库的,因为那太耗数据库的天性了。

解决方案:在业务层里先把具有的集团名称及相应的商店ID3遍性读取出来,然后存放到贰个Key和Value的键值对里,然后实现只要把1个小卖部的名字传进去,就足以博得此公司对应的商号ID,就好像查字典1样。对,大家能够运用字典Dictionary操作那么些数量。

示范:SetKeyValue()方法相应于从数据Curry读取到了企业消息。

/// <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();
//测试获得商行二的值
int directorValue = myDictionary[“公司2”];
Response.Write(“公司2的value是:” + directorValue.ToString());
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图