Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lấy số lượng cặp key/value trong OrderedDictionary trong C#

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ện OrderedDictionary<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).