KeyValuePair<TKey, TValue>是DictionaryEntry的泛型版本

本文通过对比Dictionary与HashTable、KeyValuePair与DictionaryEntry,解释了泛型集合与非泛型集合之间的区别,并展示了如何使用这些集合来存储键值对数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如同Dictionary<TKey, TValue>是HashTable的泛型版本一样,KeyValuePair<TKey, TValue>是DictionaryEntry的泛型版本。

Dictionary与HashTable内部是基于hash算法的,而SortedDictionary和SortedList是基于Red Black Tree(红黑树)的。

DictionaryEntry:

	Hashtable openWith = new Hashtable();

        // Add some elements to the hash table. There are no  
        // duplicate keys, but some of the values are duplicates.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // When you use foreach to enumerate hash table elements, 
        // the elements are retrieved as KeyValuePair objects.
        Console.WriteLine();
        foreach (DictionaryEntry de in openWith)
        {
            Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
        }

 

KeyValuePair<TKey, TValue>:

	Dictionary<string, string> openWith = 
            new Dictionary<string, string>();

        // Add some elements to the dictionary. There are no  
        // duplicate keys, but some of the values are duplicates.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");
        foreach( KeyValuePair<string, string> kvp in myDictionary )
        {
            Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
        }


 OO与面向接口:


《给定三个.NET框架中的排序集合举例》 在.NET Framework中,有三种常用的内置数据结构用于存储有序的数据:`System.Collections.Generic.CSLimited<TKey, TValue>` (CSortedList),`System.Collections.Generic.SortedDictionary<TKey, TValue>` (SortedDictionary) 和 `System.Collections.Generic.SortedSet<T>` (SortedSet)。 1. **CSortedList<TKey, TValue>**: CSortedList是一种线性的有序列表,其元素按照键值对的键进行排序。例如,你可以创建一个存储员工ID和姓名的有序列表: ```csharp CSharpKeyValuePair<int, string>[] employees = new[] { new KeyValuePair<int, string>(1001, "Alice"), new KeyValuePair<int, string>(1003, "Bob"), new KeyValuePair<int, string>(1002, "Charlie") }; CSortedList<int, string> sortedEmployees = new CSortedList<int, string>(employees); ``` 2. **SortedDictionary<TKey, TValue>**: SortedDictionary是一个键值对的有序字典,其中键是唯一的。它会自动保持键的排序。比如,我们可以按照年龄存储学生信息: ```csharp Dictionary<int, Student> students = new SortedDictionary<int, Student>(); students.Add(18, new Student { Name = "Tom", Age = 18 }); students.Add(19, new Student { Name = "Jerry", Age = 19 }); ``` 3. **SortedSet<T>**: SortedSet是一个不包含重复元素的有序集,只允许插入唯一类的元素。例如,你可以创建一个存储唯一数字的集合: ```csharp SortedSet<int> uniqueNumbers = new SortedSet<int>(); uniqueNumbers.Add(1); uniqueNumbers.Add(3); uniqueNumbers.Add(2); // 这将不会添加,因为已经存在2 ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值