Ở trong hướng dẫn trước bọn họ đã khám phá về lớp menu trong C# - một generic collection vào loạt bài xích hướng dẫn về Collection trong C#. List là 1 trong những danh sách các phần tử được định kiểu mạnh dạn được sử dụng rất thông dụng trong lập trình C#. Chúng ta có thể tìm hiểu các mục ở link sau đây nếu như không xem:


*
Trung Nguyenkco.vn
*

Lớp Dictionary vào C# y hệt như một cuốn trường đoản cú điển giờ Anh. Trường đoản cú điển tiếng Anh là một trong tập hợp những từ và quan niệm của chúng, thường xuyên được liệt kê theo thứ tự alphabet với 1 hoặc nhiều ngôn ngữ cụ thể. Theo cùng một cách, Dictionary vào C# là một tập hợp các khóa với giá trị, trong các số ấy khóa hệt như từ cùng giá trị giống hệt như định nghĩa.

Bạn đang xem: Cách dùng dictionary trong c#

Lớp Dictionary là một trong generic collection vào namespace System.Collection.Generics. Trong những số ấy TKey biểu thị kiểu dữ liệu của khóa cùng TValue là kiểu dữ liệu của giá chỉ trị.

Sơ vật sau minh họa khối hệ thống phân cấp cho lớp Dictionary.

*
Một đối tượng Dictionary có thể được gán đến một đổi mới kiểu IDictionaryhoặc Dictionary.

IDictionary dict = new Dictionary(); //orDictionary dict = new Dictionary();Trong lấy ví dụ như trên, công ty chúng tôi đã chỉ định và hướng dẫn kiểu tài liệu cho khóa và quý hiếm khi khai báo một đối tượng người dùng từ điển. Đối tượng trường đoản cú điển mang tên dict bao gồm kiểu tài liệu của khóa là int cùng kiểu dữ liệu cho cực hiếm là string. Bạn có thể sử dụng ngẫu nhiên kiểu tài liệu C# phù hợp lệ nào cho các khóa và giá trị.

Trong lập trình hướng đối tượng, nên thực hiện interface cố kỉnh vì áp dụng trực tiếp lớp tiến hành thực hiện. Vị vậy, thực hiện interface IDictionary để có thể tạo một đối tượng từ điển.

Lưu ý: trường đoản cú điển không được cho phép các khóa trùng lặp hoặc null, dẫu vậy giá trị hoàn toàn có thể trùng lặp hoặc null. Những khóa đề nghị là duy nhất nếu không nó vẫn ném nước ngoài lệ dịp thực thi.

Các thành viên đặc biệt quan trọng của Dictionary

Các trực thuộc tính quan trọng đặc biệt của Dictionary:


Thuộc tínhMiêu tả
CountTrả về tổng số bộ phận tồn tại trong Dictionary.
IsReadOnlyTrả về một giá bán trị cho biết liệu Dictionary có ở chính sách chỉ đọc hay không.
ItemTrả về hoặc thiết lập thành phần với khóa được chỉ định trong Dictionary.
KeysTrả về danh sách các khóa của Dictionary.
ValuesTrả về danh sách những giá trị vào Dictionary.

Các phương thức đặc biệt của Dictionary:


Phương thứcMiêu tả
AddThêm một trong những phần tử vào Dictionary.
AddThêm một cặp khóa-giá trị vào Dictionary.
RemoveXóa bộ phận xuất hiện đầu tiên được chỉ định thoát ra khỏi Dictionary.
RemoveXóa phần tử với khóa được chỉ định.
ContainsKeyKiểm tra coi khóa được chỉ định gồm tồn trên trong Dictionary không.
ContainsValueKiểm tra xem cực hiếm được chỉ định bao gồm tồn tại trong Dictionary không.
ClearXóa toàn bộ các bộ phận khỏi Dictionary.
TryGetValueTrả về true và gán giá trị với khóa được chỉ định, nếu khóa không tồn trên thì trả về false.

Thêm bộ phận vào Dictionary

Sử dụng thủ tục Add() để thêm cặp khóa-giá trị vào từ bỏ điển.

Xem thêm: Khoảng Chuyển Màu Của Chất Chỉ Thị Màu Là Gì ? Chất Chỉ Thị Màu Trong Nghiên Cứu Hóa Học

IDictionary dict = new Dictionary();dict.Add(1,"One");dict.Add(2,"Two");dict.Add(3,"Three");IDictionary gồm nạp ck phương thức Add(). Nó gật đầu đồng ý struct KeyValuePair như là một trong những tham số đầu vào.

Tips: đánh giá xem một từ điển đã lưu trữ khóa được chỉ định trước khi thêm cặp khóa-giá trị.

Ví dụ sau minh họa về thêm bộ phận vào Dictionary:

IDictionary dict = new Dictionary();dict.Add(new KeyValuePair(1, "One"));dict.Add(new KeyValuePair(2, "Two"));//The following is also validdict.Add(3, "Three");Từ điển cũng rất có thể được khởi tạo bằng cú pháp khởi tạo đối tượng người sử dụng như dưới đây.

IDictionary dict = new Dictionary()1,"One",2, "Two",3,"Three";

Truy cập thành phần của Dictionary

Các phần tử của trường đoản cú điển có thể được truy cập bằng các cách, ví dụ: áp dụng vòng lặp foreach hoặc vòng lặp for.

Sử dụng vòng lặp foreach hoặc for để chú tâm qua toàn bộ các bộ phận của tự điển. Trường đoản cú điển lưu lại trữ những cặp khóa-giá trị. Vị vậy, chúng ta có thể sử dụng kiểu KeyValuePair hoặc một trở nên var trong vòng lặp foreach như dưới đây.

Dictionary dict = new Dictionary()1,"One",2, "Two",3,"Three";foreach (KeyValuePair thành quả in dict) Console.WriteLine("Key: 0, Value: 1", item.Key, item.Value);Đây là tác dụng khi biên dịch cùng chạy chương trình:

Key: 1, Value: OneKey: 2, Value: TwoKey: 3, Value: ThreeSử dụng cho vòng lặp for để truy cập toàn bộ các phần tử. áp dụng thuộc tính Count của từ điển để lấy tổng số bộ phận trong tự điển.

Dictionary dict = new Dictionary()1,"One",2, "Two",3,"Three";for (int i = 0; i Đây là tác dụng khi biên dịch cùng chạy chương trình:

Key: 1, Value: OneKey: 2, Value: TwoKey: 3, Value: ThreeTừ điển hoàn toàn có thể được sử dụng như một mảng để truy cập các phần tử riêng lẻ của nó. Hướng đẫn khóa (không đề nghị chỉ mục) để lấy giá trị trong từ điển bằng cách sử dụng bộ chỉ mục như 1 mảng.

Dictionary dict = new Dictionary() 4, "Four" , 2, "Two" , 3, "Three" ;Console.WriteLine(dict<4>); //returns FourConsole.WriteLine(dict<2>); // returns TwoĐây là kết quả khi biên dịch và chạy chương trình:

FourTwo

Lưu ý: Indexer mang khóa có tác dụng tham số. Trường hợp khóa được hướng dẫn và chỉ định không mãi mãi thì sẽ ném ra ngoại lệ KeyNotFoundException.

Nếu bạn không chắc chắn về khóa thì nên sử dụng thủ tục TryGetValue(). Cách tiến hành TryGetValue() sẽ trả về false nếu không kiếm thấy khóa thay vị ném ngoại lệ.

Dictionary dict = new Dictionary() 4, "Four" , 2, "Two" , 3, "Three" ;string result;if(dict.TryGetValue(1, out result)) Console.WriteLine(result);else Console.WriteLine("Could not find the specified key.");Đây là kết quả khi biên dịch với chạy chương trình:

Could not find the specified key.

Kiểm tra thành phần tồn trên trong Dictionary

Từ điển có không ít phương thức không giống nhau để xác định xem 1 phần tử hoặc khóa được chỉ định bao gồm tồn tại trong từ điển hay không.

Sử dụng thủ tục ContainsKey() để kiểm tra xem một khóa được chỉ định có tồn trên trong tự điển tốt không.

Sử dụng cách làm Contains() để chất vấn xem cặp Khóa và quý hiếm được chỉ định bao gồm tồn trên trong từ điển giỏi không.

Dictionary dict = new Dictionary()4, "Four",2, "Two",3, "Three";dict.ContainsKey(1); // returns falsedict.ContainsKey(4); // returns truedict.Contains(new KeyValuePair(2,"Two")); // returns trueMột nạp ông chồng của cách tiến hành Contains() rước IEqualityComperer làm cho tham số lắp thêm hai. Một phiên phiên bản của IEqualityComparer được áp dụng khi bạn muốn tùy chỉnh biểu thức so sánh.

Hãy xem ví dụ tiếp sau đây về một từ điển tàng trữ các đối tượng người tiêu dùng Student.

public class Student public int Id get; set; public string Name get; set; class StudentDictionaryComparer : IEqualityComparer> public bool Equals(KeyValuePair x, KeyValuePair y) return x.Key == y.Key && (x.Value.Id == y.Value.Id) && (x.Value.Name == y.Value.Name); public int GetHashCode(KeyValuePair obj) return obj.Key.GetHashCode(); class Program static void Main(string<> args) IDictionary studentDict = new Dictionary() 1, new Student() Id =1, Name = "Bill", 2, new Student() Id =2, Name = "Steve", 3, new Student() Id =3, Name = "Ram"; Student std = new Student() Id = 1, Name = "Bill" ; KeyValuePair elementToFind = new KeyValuePair(1, std); bool result = studentDict.Contains(elementToFind, new StudentDictionaryComparer()); // returns true Console.WriteLine(result); Đây là hiệu quả khi biên dịch cùng chạy chương trình:

trueTrong ví dụ như trên, shop chúng tôi đã thực hiện StudentDictionaryComparer triển khai thực hiện interface IEqualityComparer để so sánh các đối tượng người sử dụng Student trong từ điển. Bộ so sánh mặc định sẽ chỉ hoạt động với các kiểu tài liệu nguyên thủy.

Xóa các phần tử trong Dictionary

Sử dụng cách tiến hành Remove() để xóa một phần tử hiện tất cả khỏi tự điển. Cách tiến hành Remove() có hai nạp ông chồng phương thức, một phương thức đồng ý một khóa và một thủ tục khác chấp nhận struct KeyValuePair có tác dụng tham số.

Ví dụ sau minh họa xóa thành phần trong Dictionary thực hiện phương thức Remove cùng với khóa là tham số:

Dictionary dict = new Dictionary()1,"One",2, "Two",3,"Three";dict.Remove(1); // removes the vật phẩm which has 1 as a keyVới thủ tục Remove() sử dụng KeyValuePair có tác dụng tham số thì cả Khóa và giá trị chỉ định buộc phải khớp thì mới có thể xóa 1 phần tử. Lấy ví dụ như sau sẽ không còn xóa bất kỳ phần tử nào:

// removes nothing because value Two1 is not matchingdict.Remove(new KeyValuePair(2, "Two1")); sử dụng generic collection SortedDictionary nếu bạn muốn sắp xếp các thành phần trong tự điển dựa trên khóa.

Những vấn đề cần nhớ:

Dictionary lưu trữ những cặp Khóa-Giá trị trong những số đó khóa đề xuất là duy nhất.Trước khi thêm KeyValuePair vào từ điển, hãy bình chọn xem khóa kia không tồn tại bởi phương thức ContainsKey().Sử dụng cách tiến hành TryGetValue() để mang giá trị của khóa nhằm tránh các ngoại lệ lúc thực thi hoàn toàn có thể xảy ra.Sử dụng vòng lặp foreach hoặc for để duyệt qua tất cả bộ phận của từ điển.Sử dụng cỗ chỉ mục của từ bỏ điển để truy vấn từng phần tử.Sử dụng lớp tùy chỉnh thiết lập xuất phát từ interface IEqualityComparer để so sánh đối tượng người dùng của lớp cấu hình thiết lập trong phương thức Contains().

Ở chỉ dẫn tiếp theo chúng ta sẽ tìm hiểu về SortedList - cũng là 1 generic collection như Dictionary, cũng lưu giữ trữ các cặp khóa - giá chỉ trị.