`
未雨绸缪
  • 浏览: 215755 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

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));

泛型和非泛型集合对照表:
非泛型集合类泛型集合类
ArrayListList<T>
HashTableDIctionary<T>
QueueQueue<T>
StackStack<T>
SortedListSortedList<T>
分享到:
评论

相关推荐

    C# System.Collections 非泛型接口方法解析.pdf

    在C#编程中,System.Collections命名空间包含了许多非泛型集合接口,这些接口是.NET框架早期版本的基础,尽管现在泛型集合接口(如`IEnumerable&lt;T&gt;`)更为常用,但理解非泛型接口对于维护旧代码或处理特定场景仍然很...

    C# .net HashTable

    在C# .NET编程环境中,`HashTable`类是一个非同步、无序的键值对集合,它提供了快速的数据存储和检索功能。`HashTable`类是基于哈希表数据结构实现的,这使得它能够通过键(key)来快速查找值(value)。在本文中,...

    C#关于System.Collections空间详解

    C#的System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能。...— System.Collections.Queue:队列,表示对象的先进先出集合。 — System.Collections.Stack:堆栈,表示对象的简

    C#中Dictionary泛型集合7种常见的用法

     System.Collections.Generic(程序集:mscorlib)  Dictionary的描述 1、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成 2、任何键都必须是唯一的 3、键不能为空引用null...

    C#.net 连接数据库.txt

    - **`System.Collections.Generic`**:提供了泛型集合类,如`List&lt;T&gt;`等。 - **`System.Text`**:提供了文本处理类,如字符串编码等。 - **`System.Data`**:包含了用于数据访问的基础类。 - **`System.Data.OleDb`*...

    C#.net程序设计期末复习材料

    12. **.NET框架**:了解.NET Framework提供的类库,如System.IO、System.Collections.Generic、System.Data.SqlClient等,它们为开发提供了丰富的功能。 13. **单元测试**:学习如何使用 MSTest 或 NUnit 进行单元...

    《Visual C#.NET程序设计(修订本)》作者杨晓光—PPT

    了解.NET Framework的层次结构和常用命名空间,如System.IO(输入/输出)、System.Collections(集合)等,有助于编写高效代码。 4. **异常处理**:C#通过try-catch语句块来捕获和处理运行时错误。理解如何正确地抛...

    经典C#.NET考试题

    在.NET框架下,C#还有许多强大的库支持,如System.Collections.Generic库提供了各种泛型集合类,可以有效避免类型转换的开销。System.IO库则包含了处理文件和流的操作,如读写文件、创建目录等。此外,LINQ...

    com.unity.collections@0.9.0-preview.6.7z

    1. **System.Runtime.CompilerServices.Unsafe.dll**:这是.NET框架的一个组件,包含了一些不安全的C#代码操作,例如直接操作内存,这对于高性能计算和底层数据操作很有用。 2. **package.json**:这是npm(Node.js...

    C#常用的42个类

    5. `System.Collections.Generic.List&lt;T&gt;`:泛型集合,可以存储指定类型的元素,支持动态增长。 6. `System.Collections.Generic.Dictionary, TValue&gt;`:键值对的集合,提供快速查找和存储功能。 7. `System.IO....

    C#命名空间分类

    C#命名空间详细分类介绍,方便编程使用,System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。 System.Collections.Generic //命名空间包含定义...

    C#集合容器(collection)详解

    在.NET框架中,集合通过实现`System.Collections.ICollection`、`System.Collections.IDictionary`或`System.Collections.IList`等接口来实现。基于这些接口,我们可以将集合大致分为以下三类: 1. **有序集合**:...

    C#.NET Framework 源代码

    2. **.NET Framework基础**:每个章节的代码都会涉及到.NET Framework的组件,如System.Collections.Generic用于处理集合,System.IO用于文件操作,System.Net用于网络通信等,这些是C#开发的基础。 3. **控制流与...

    C# .NET 笔试面试题集合

    《C# .NET 笔试面试题集合》 在IT领域,C#和.NET框架是开发者广泛应用的技术栈,尤其在企业级应用开发中占据重要地位。对于应届生和有经验的开发者而言,掌握C# .NET的核心知识是求职过程中不可或缺的一部分。本...

    C#.net面试题100题

    - 理解.NET类库,如System.Collections.Generic用于泛型集合,或者System.IO用于文件操作。 3. **异常处理** - 如何使用try-catch-finally块来处理程序中的异常。 - 自定义异常类及其使用。 4. **委托和事件** ...

    C#.NET编程培训教程书附光盘

    数组是最简单的集合形式,但C#还提供了更强大的集合类,如List、Dictionary, TValue&gt;等,它们属于System.Collections.Generic命名空间。此外,LINQ(Language Integrated Query)提供了一种简洁的查询数据的方式,...

Global site tag (gtag.js) - Google Analytics