Mục đích
Thuộc tính OrderedDictionary.Count trả về số lượng cặp khóa/giá trị hiện có. OrderedDictionary giữ thứ tự chèn (insertion order).
Ví dụ 1: Thêm, đếm, duyệt, Clear
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo
{
public static void Main()
{
OrderedDictionary dict = new OrderedDictionary();
dict.Add("A", "Home Appliances");
dict.Add("B", "Electronics");
dict.Add("C", "Smart Wearables");
dict.Add("D", "Pet Supplies");
dict.Add("E", "Clothing");
dict.Add("F", "Footwear");
Console.WriteLine("OrderedDictionary:");
foreach (DictionaryEntry d in dict)
Console.WriteLine($"{d.Key} {d.Value}");
Console.WriteLine($"\nCount: {dict.Count}"); // 6
dict.Clear();
Console.WriteLine($"Count sau Clear(): {dict.Count}"); // 0
}
}
Kết quả
OrderedDictionary:
A Home Appliances
B Electronics
C Smart Wearables
D Pet Supplies
E Clothing
F Footwear
Count: 6
Count sau Clear(): 0
Ví dụ 2: Nhiều Dictionary, so sánh, AsReadOnly
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo
{
public static void Main()
{
OrderedDictionary dict1 = new OrderedDictionary();
dict1.Add("A", "John"); dict1.Add("B", "Andy"); dict1.Add("C", "Jacob");
dict1.Add("D", "Kevin"); dict1.Add("E", "Gary"); dict1.Add("F", "Nathan");
dict1.Add("G", "Kevin"); dict1.Add("H", "Ryan");
Console.WriteLine("Dict1:");
foreach (DictionaryEntry d in dict1) Console.WriteLine($"{d.Key} {d.Value}");
Console.WriteLine($"Count: {dict1.Count}"); // 8
OrderedDictionary dict2 = new OrderedDictionary();
dict2.Add("1", "One"); dict2.Add("2", "Two"); dict2.Add("3", "Three");
dict2.Add("4", "Four"); dict2.Add("5", "Five"); dict2.Add("6", "Six");
Console.WriteLine("\nDict2:");
foreach (DictionaryEntry d in dict2) Console.WriteLine($"{d.Key} {d.Value}");
Console.WriteLine($"Count: {dict2.Count}"); // 6
Console.WriteLine($"\ndict1 == dict2? {dict1.Equals(dict2)}"); // False
// Tạo read-only wrapper
OrderedDictionary readOnlyDict = dict2.AsReadOnly();
Console.WriteLine($"IsReadOnly: {readOnlyDict.IsReadOnly}"); // True
}
}
Kết quả
Dict1:
A John
B Andy
C Jacob
D Kevin
E Gary
F Nathan
G Kevin
H Ryan
Count: 8
Dict2:
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
Count: 6
dict1 == dict2? False
IsReadOnly: True
Đặc điểm OrderedDictionary
- Non-generic (key/value là object).
- Giữ **thứ tự chèn** (insertion order).
- Truy xuất bằng key:
dict["A"]hoặc index:dict[0](trả về value). - Hỗ trợ
Insert(index, key, value),RemoveAt(index). AsReadOnly()trả về wrapper chỉ đọc.- **Legacy**: Dùng
Dictionary<TKey, TValue>+List<TKey>hoặc thư việnOrderedDictionary<TKey, TValue>cho code mới.
So sánh Count
// OrderedDictionary (non-generic)
int count = orderedDict.Count;
// Dictionary<TKey, TValue> (generic)
int count = dict.Count;
// List<T>
int count = list.Count;
Tất cả đều O(1).