泛型集合及其初始化

发布日期:2026-07-14 18:56:03   来源 : 杭州电子商务研究院    浏览量 :2
杭州电子商务研究院 发布日期:2026-07-14 18:56:03  
2

介绍

随着编程语言的出现,它们之间通常有一个共同的需求。人们希望以结构化的方式存储数据,以便以后检索和操作数据。有一些通用操作通常对这些数据集执行。

运营:

  1. 添加、删除
  2. 查找、排序、搜索
  3. 代替
  4. 复制、克隆、
  5. 存储元素的数量

C# 和 .NET 也不例外。框架提供了两种类型的集合供您使用。

收藏:

  1. 通用的
  2. 非通用

在 .NET v2.0 之前,只有集合。

非通用集合:

  1. 数组列表
  2. 哈希表
  3. 排序列表
  4. 队列

通用集合:

  1. 列表
  2. 字典
  3. 排序列表
  4. 队列

泛型集合和非泛型集合之间的主要区别在于它们可以存储的值类型。在非泛型集合中,每个元素可以表示不同类型的值,并且集合大小不固定。这意味着,以后可以添加或删除项目。

利用泛型

为了利用泛型提供的功能,我们需要在应用程序顶部添加以下行。

      using System.Collections.Generic;
    

这使得我们能够引用具有以下初始化的通用List数据结构。

      List<int> myList = new List<int>(10);
    

如果没有using语句,我们将需要指定类或数据结构的完整限定路径。

      System.Collections.Generic.List<int> myList = System.Collections.Generic.List<int>(10);
    

使用using语句可以将其他类和库导入到实际命名空间。从而减少代码库并使开发人员更容易理解代码。

非通用哈希表

哈希表由特定类型的键和值对组成。根据一般要求,此数据结构支持多种类型的操作。您可以添加、删除、查找、替换等... 任何您放入此哈希表的内容。

      static void Main(string[] args)
{
    Hashtable myHash = new Hashtable();

    myHash.Add("Pluralsight", "is the first!");
    myHash.Add(2, "is the most cool language!");
    myHash.Add(-3.0, "is really fun!");

    foreach (DictionaryEntry d in myHash)
        Console.WriteLine(d.Key + " " + d.Value);
	
	Console.ReadLine();
}
    

输出将会是这样的。

      2 is the coolest language!
Pluralsight is the first!
-3.0 is really fun!
    

请注意,哈希表不保留插入顺序。这意味着foreach可以在每次连续运行后产生上述输出。

通用 ArrayList

通用 arraylist 的属性允许您将任意类型的值存储在不断扩展的列表中。您可以向此列表添加和删除任意数量的元素。以下代码块向您展示了如何初始化 ArrayList 添加项目、迭代项目,甚至删除您认为不值得拥有的项目。您还可以随时获取列表中保存的项目数量。

      static void Main(string[] args)
{
    ArrayList myArray = new ArrayList();
    
    myArray.Add(1);
    myArray.Add(2);
    myArray.Add("Pluralsight");
    myArray.Add("Written guide!");
    
    foreach (object element in myArray)
        Console.WriteLine($"The array list: {element}");
    
    Console.WriteLine($"There are a total of {myArray.Count} element(s) in myArray!");
    myArray.Remove(1);
    Console.WriteLine($"There are a total of {myArray.Count} element(s) in myArray!");
}
    

执行的输出如下。我们将四个项目放入列表中,获取元素数量,删除一个元素,然后再次获取元素数量。

      The array list: 1
The array list: 2
The array list: Pluralsight
The array list: Written guide!
There are a total of 4 element(s) in myArray!
There are a total of 3 element(s) in myArray!
    

装箱和拆箱

当您在 C# 中使用泛型时,这个概念非常重要。该概念及其实现提供了强类型集合的一些好处,并为代码提供了更高的质量和性能提升。

C# 中的数据类型主要分为两类,一类称为值类型,另一类称为引用类型。装箱是将值类型转换为引用类型的过程。在后台,CLR 会在堆中分配一个新对象。然后将值类型的值复制到该实例中。

以下是一个例子。

      int b = 99;
object b = a;
int c = (int)b;
    

第一行返回显式整数类型变量b,其值为 99。第二行将其转换为引用类型,并复制其值。最后一行返回值为c值类型的值 99。当 C# 编译器看到从intobject 的赋值,反之亦然时,它会自动插入相应的boxunbox语句。

在幕后,此活动与如何在 C# 中处理泛型和非泛型集合有关。

结论

总而言之,通用和非通用集合也是 .NET 和 C# 中一个不错的内置工具集。了解它们提供的功能和便利可以大大提高应用程序的质量,同时还可以减小程序的大小。这些工具集随着时间的推移被收集起来,作为通用用途,第三方实现变得越来越流行,它们被纳入 .NET 框架,以统一和标准化这些类、函数和数据结构/类型的来源。我希望您能够找到您要找的东西。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据