`
- 浏览:
215755 次
- 性别:
- 来自:
陕西
-
C#.NET 集合对象(System.Collections)
1. System.Array 和 System.Collecions.ArrayList
前者是所有数组的抽象基类,每实例化一个数组,就是创建了一个Array类型的实例;后者是可以创建一个大小可变的数组。两者可以使用 BinarySearch进行查询,但必须先进行排序(排序必须实现IComparable或IComparer接口,IComparable提供排序的默认方式;而IComparer为排序提供了其他方式的选择,默认实现为Comparer,区分大小写,而 CaseInsensitiveComparer类是 IComparer 接口的实现,该接口执行不区分大小写的字符串比较。)。
区别:
* Array大小是固定的,而ArrayList大小是可变。
* Array 存储的对象类型必须是相同的,而ArrayList可以存储不同类型的对象。
* 在CLR托管堆上,Array存储的对象必须是连续存储的,而可以不是。
* 两者都继承了IList接口,但由于Array不支持Add,Insert,Remove,RemoeAt方法,所以 Array不能随意的添加、插入、移除对象。
* ArrayList可以使用TrimToResize()方法来压缩内存,实现最小化集合的内存开销。
2. System.Collections.HashTable
通过键/值堆来对数据进行存储,键不能为空,可以按键进行访问;继承了IDictionary接口。
HashTable遍历:
* DictionaryEntry
例:
Hashtable ht = new Hashtable();
foreach (DictionaryEntry item in ht)
{
Console.WriteLine(item.Key.ToString()+"-"+item.Value.ToString());
}
* IDictionaryEnumerator
例:
IDictionaryEnumerator enumertor = ht.GetEnumerator();
while (enumertor.MoveNext())
{
Console.WriteLine(enumertor.Key.ToString()+"-"+enumertor.Value.ToString());
}
3. System.Collectins.SortedList(不常使用)
用于存储键值对,可以按键排序并可按照键和索引访问。
例:
Hashtable ht = new Hashtable();
ht.Add(4, "4");
ht.Add(3, "3");
ht.Add(2, "2");
ht.Add(1, "1");
SortedList sortedList = new SortedList(ht, new Comparer(CultureInfo.CurrentCulture));
Console.WriteLine("按索引访问");
for (int i = 0; i < sortedList.Count; i++)
{
Console.WriteLine(sortedList.GetKey(i).ToString() + "-" + sortedList.GetByIndex(i).ToString());
}
Console.WriteLine("foreach 访问");
foreach (DictionaryEntry item in sortedList)
{
Console.WriteLine(item.Key.ToString() + "-" + item.Value.ToString());
}
4. System.Collections.Queue 和 System.Collections.Stack
Queue 表示对象的先进先出集合。
Stack 表示对象后进先出的集合。
5. System.Collections.BitArray
管理位值的压缩数组,该值表示为布尔值,其中 true 表示位是打开的 (1),false 表示位是关闭的 (0)。
例:
BitArray bitArray = new BitArray(new int[]{9});//初始化,int类型占32位
foreach (bool item in bitArray) //循环输出bitArray值
{
Console.WriteLine(item.ToString());
}
bool flag = bitArray.Get(2);//获取位值的压缩数组的第三项的值
Console.WriteLine(flag);
bitArray.Set(2, !flag);//修改位值的压缩数组第三项的值
Console.WriteLine(bitArray.Get(2));
泛型和非泛型集合对照表:
非泛型集合类 | 泛型集合类 |
ArrayList | List<T> |
HashTable | DIctionary<T> |
Queue | Queue<T> |
Stack | Stack<T> |
SortedList | SortedList<T> |
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在C#编程中,System.Collections命名空间包含了许多非泛型集合接口,这些接口是.NET框架早期版本的基础,尽管现在泛型集合接口(如`IEnumerable<T>`)更为常用,但理解非泛型接口对于维护旧代码或处理特定场景仍然很...
在C# .NET编程环境中,`HashTable`类是一个非同步、无序的键值对集合,它提供了快速的数据存储和检索功能。`HashTable`类是基于哈希表数据结构实现的,这使得它能够通过键(key)来快速查找值(value)。在本文中,...
C#的System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能。...— System.Collections.Queue:队列,表示对象的先进先出集合。 — System.Collections.Stack:堆栈,表示对象的简
System.Collections.Generic(程序集:mscorlib) Dictionary的描述 1、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成 2、任何键都必须是唯一的 3、键不能为空引用null...
- **`System.Collections.Generic`**:提供了泛型集合类,如`List<T>`等。 - **`System.Text`**:提供了文本处理类,如字符串编码等。 - **`System.Data`**:包含了用于数据访问的基础类。 - **`System.Data.OleDb`*...
12. **.NET框架**:了解.NET Framework提供的类库,如System.IO、System.Collections.Generic、System.Data.SqlClient等,它们为开发提供了丰富的功能。 13. **单元测试**:学习如何使用 MSTest 或 NUnit 进行单元...
了解.NET Framework的层次结构和常用命名空间,如System.IO(输入/输出)、System.Collections(集合)等,有助于编写高效代码。 4. **异常处理**:C#通过try-catch语句块来捕获和处理运行时错误。理解如何正确地抛...
在.NET框架下,C#还有许多强大的库支持,如System.Collections.Generic库提供了各种泛型集合类,可以有效避免类型转换的开销。System.IO库则包含了处理文件和流的操作,如读写文件、创建目录等。此外,LINQ...
1. **System.Runtime.CompilerServices.Unsafe.dll**:这是.NET框架的一个组件,包含了一些不安全的C#代码操作,例如直接操作内存,这对于高性能计算和底层数据操作很有用。 2. **package.json**:这是npm(Node.js...
5. `System.Collections.Generic.List<T>`:泛型集合,可以存储指定类型的元素,支持动态增长。 6. `System.Collections.Generic.Dictionary, TValue>`:键值对的集合,提供快速查找和存储功能。 7. `System.IO....
C#命名空间详细分类介绍,方便编程使用,System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。 System.Collections.Generic //命名空间包含定义...
在.NET框架中,集合通过实现`System.Collections.ICollection`、`System.Collections.IDictionary`或`System.Collections.IList`等接口来实现。基于这些接口,我们可以将集合大致分为以下三类: 1. **有序集合**:...
2. **.NET Framework基础**:每个章节的代码都会涉及到.NET Framework的组件,如System.Collections.Generic用于处理集合,System.IO用于文件操作,System.Net用于网络通信等,这些是C#开发的基础。 3. **控制流与...
《C# .NET 笔试面试题集合》 在IT领域,C#和.NET框架是开发者广泛应用的技术栈,尤其在企业级应用开发中占据重要地位。对于应届生和有经验的开发者而言,掌握C# .NET的核心知识是求职过程中不可或缺的一部分。本...
- 理解.NET类库,如System.Collections.Generic用于泛型集合,或者System.IO用于文件操作。 3. **异常处理** - 如何使用try-catch-finally块来处理程序中的异常。 - 自定义异常类及其使用。 4. **委托和事件** ...
数组是最简单的集合形式,但C#还提供了更强大的集合类,如List、Dictionary, TValue>等,它们属于System.Collections.Generic命名空间。此外,LINQ(Language Integrated Query)提供了一种简洁的查询数据的方式,...