程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#泛型聚集Dictionary<K,V>的應用辦法

C#泛型聚集Dictionary<K,V>的應用辦法

編輯:C#入門知識

C#泛型聚集Dictionary<K,V>的應用辦法。本站提示廣大學習愛好者:(C#泛型聚集Dictionary&lt;K,V&gt;的應用辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#泛型聚集Dictionary&lt;K,V&gt;的應用辦法正文


1、要應用Dictionary聚集,須要導入C#泛型定名空間

  System.Collections.Generic(法式集:mscorlib)

2、描寫

   1)、從一組鍵(Key)到一組值(Value)的映照,每個添加項都是由一個值及其相干連的鍵構成
   2)、任何鍵都必需是獨一的
   3)、鍵不克不及為空援用null(VB中的Nothing),若值為援用類型,則可認為空值
   4)、Key和Value可所以任何類型(string,int,custom class 等)

3、創立及初始化


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

4、添加元素


   myDictionary.Add("C#",0);
   myDictionary.Add("C++",1);
   myDictionary.Add("C",2);
   myDictionary.Add("VB",2);

5、查找元素By Key


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

6.遍歷元素 By KeyValuePair


  foreach (KeyValuePair<string, int> kvp in myDictionary)
  {
    Console.WriteLine("Key = {0}, Value = {1}",kvp.Key, kvp.Value);
  }

7、僅遍歷鍵 By Keys 屬性


  Dictionary<string, int>.KeyCollection keyCol = myDictionary.Keys;
  foreach (string key in keyCol/*string key in myDictionary.Keys*/)
  {
    Console.WriteLine("Key = {0}", key);
  }

8、僅遍歷值By Valus屬性


  Dictionary<string, int>.ValueCollection valueCol = myDictionary.Values;
  foreach (int value in valueCol)
  {
    Console.WriteLine("Value = {0}", value);
  }

9.移除指定的鍵值By Remove辦法


  myDictionary.Remove("C#");
  if (myDictionary.ContainsKey("C#"))
  {
    Console.WriteLine("Key:{0},Value:{1}", "C#", myDictionary["C#"]);
  }
  else
  {
    Console.WriteLine("不存在 Key : C#");
      }

在System.Collections.Generic定名空間中,與ArrayList絕對應的泛型聚集是List<T>,與 HashTable絕對應的泛型聚集是Dictionary<K,V>,其存儲數據的方法與哈希表類似,經由過程鍵/值來保留元素,並具有泛型的全體特點,編譯時檢討類型束縛,讀取時不必類型轉換。

德律風本存儲的例子中,應用Dictionary<K,V>來存儲德律風本信息,代碼以下:


Dictionary<string,TelNote> ht=new Dictionary<string,TelNote>();

在Dictionary<K,V>聲明中,“<string,TelNote>”中的string表現聚集中Key的類型,TelNote表現Value的類型,界說Dictionary<K,V>泛型聚集中的辦法以下:


Dictionary<K,V> students=new Dictionary<K,V>();

個中“K”為占位符,詳細界說時用存儲鍵“Key”的數據類型取代,“V”也是占位符,用元素的值“Value”的數據類型取代,如許就在界說該聚集時,聲清楚明了存儲元素的鍵和值的數據類型,包管了類型的平安性。

Dictionary<K,V>中元素的操作辦法與HashTable類似,添加元素,獲得元素,刪除元素,遍歷聚集元素的辦法根本雷同。

Dictionary<K,V>和HashTable的差別
Dictionary<K,V>和HashTable的雷同點:添加元素,刪除元素,經由過程鍵拜訪值的辦法雷同。
Dictionary<K,V>和HashTable的分歧點:
Dictionary<K,V>對添加的元素具有類型束縛,HashTable可添加隨意率性類型的元素。
Dictionary<K,V>不須要裝箱、拆箱操作,HashTable添加古裝箱,讀取時拆箱。

在Dictionary<K,V>聚集中,除經由過程鍵獲得值的辦法外,還有一種TryGetValue(key)辦法,可以經由過程鍵獲得值,該辦法前往值為布爾型,假如存在和鍵絕對應的值,則前往true,不然前往false。防止了因獲得不到響應值產生的異常。


using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
   //創立Dictionary<K,V>,然後添加元素
   Dictionary < string, string > film = new Dictionary < string, string > ();
   film.Add("韋小寶", "鹿鼎記");
   film.Add("陸小鳳", "陸小鳳傳奇");
   film.Add("張無忌", "倚天屠龍記");
   film.Add("楊過", "神雕俠侶");
   film.Add("令狐沖", "笑傲江湖");
   Console.WriteLine("聚集如今的元素個數為{0}", film.Count);
   film.Remove("楊過");
   //遍歷聚集
   Console.WriteLine("武俠片子的配角及片子名");
   Console.WriteLine("/t配角/t片子");
   foreach (KeyValuePair < string, string > kvp in film)
   {
    Console.WriteLine("/t{0}/t{1}", kvp.Key, kvp.Value);
   }
   //檢討元素能否存在,如不存在,添加
   if (!film.ContainsKey("段譽"))
   {
    film.Add("段譽", "天龍八部");
   }
   //獲得鍵的聚集
   Dictionary < string, string > .KeyCollection keys = film.Keys;
   //遍歷鍵的聚集
   Console.WriteLine("受迎接的武俠片中配角名");
   foreach (string str in keys)
   {
    Console.WriteLine(str);
   }
   Dictionary < string, string > .ValueCollection values = film.Values;
   //遍歷值的聚集
   Console.WriteLine("最受迎接的武俠片");
   foreach (string strfilm in values)
   {
    Console.WriteLine(strfilm);
   }
   //遍歷元素的另外一種辦法
   Console.WriteLine("和哈希表雷同的遍歷元素辦法");
   foreach (string strname in film.Values)
   {
    Console.WriteLine(strname);
   }
   //獲得鍵對應的值
   string myfilm = film["令狐沖"];
   Console.WriteLine("配角為令狐沖的片子名{0}", myfilm);
   //獲得鍵對應值的TryGetValue辦法
   string objfilm = string.Empty;
   if (film.TryGetValue("段譽", out objfilm))
   {
    Console.WriteLine("配角為段譽的片子是{0}", objfilm);
   }
   else
    Console.WriteLine("沒有配角為段譽的片子");
   Console.ReadKey();
}
}

代碼創立了一個Dictionary<K,V>聚集,鍵和值的數據類型是string類型,後邊代碼的元素添加,刪除都和哈希表處置辦法雷同,遍歷元素時不須要停止數據類型強迫轉換。Dictionary<K,V>經由過程鍵取值的TryGetValue辦法,此辦法包含兩個參數,一個是要查詢的鍵,另外一個是獲得的值,留意值後面應用out症結字。

留意:應用TryGetValue辦法時,參數必定要應用out症結字,不然編譯掉敗。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved