泛型集合及其初始化
介绍
随着编程语言的出现,它们之间通常有一个共同的需求。人们希望以结构化的方式存储数据,以便以后检索和操作数据。有一些通用操作通常对这些数据集执行。
运营:
- 添加、删除
- 查找、排序、搜索
- 代替
- 复制、克隆、
- 存储元素的数量
C# 和 .NET 也不例外。框架提供了两种类型的集合供您使用。
收藏:
- 通用的
- 非通用
在 .NET v2.0 之前,只有集合。
非通用集合:
- 数组列表
- 哈希表
- 排序列表
- 堆
- 队列
通用集合:
- 列表
- 字典
- 排序列表
- 堆
- 队列
泛型集合和非泛型集合之间的主要区别在于它们可以存储的值类型。在非泛型集合中,每个元素可以表示不同类型的值,并且集合大小不固定。这意味着,以后可以添加或删除项目。
利用泛型
为了利用泛型提供的功能,我们需要在应用程序顶部添加以下行。
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# 编译器看到从int到object 的赋值,反之亦然时,它会自动插入相应的box和unbox语句。
在幕后,此活动与如何在 C# 中处理泛型和非泛型集合有关。
结论
总而言之,通用和非通用集合也是 .NET 和 C# 中一个不错的内置工具集。了解它们提供的功能和便利可以大大提高应用程序的质量,同时还可以减小程序的大小。这些工具集随着时间的推移被收集起来,作为通用用途,第三方实现变得越来越流行,它们被纳入 .NET 框架,以统一和标准化这些类、函数和数据结构/类型的来源。我希望您能够找到您要找的东西。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~