每个.NET开发都应掌握的C#集合知识点

这篇具有很好参考价值的文章主要介绍了每个.NET开发都应掌握的C#集合知识点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上篇文章讲述了C#委托和事件知识点,本文将介绍C#集合知识点。作为.NET开发人员,C#集合是你在构建强大和高效应用程序时的关键技能之一。C#集合提供了一系列丰富的数据结构,可以帮助你更好地管理、操作和组织数据。本文将介绍一些每个.NET开发人员都应该掌握的C#集合知识点。

1、灵活的List

List.是.NET Framework 2.0跟随泛型推出的新特征,有了它之后,避免了ArryList数据类型装箱拆箱消耗的问题,它.NET中最常用的集合之一。它实现了动态数组的概念,允许你轻松地添加、删除和访问元素,而无需担心数组大小的限制。你可以使用索引来访问元素,还可以使用方法如Add、Remove和Insert来修改列表。案例如下:

List<string> tasks = new List<string>();//string也可以换成属性类等
tasks.Add("欢迎关注");
tasks.Add("公众号");
tasks.Add("公众号s");
tasks.Add("DOTNET开发跳槽");
tasks.Remove("公众号s");
foreach (var item in tasks)
{
      Console.Write(item);
}

在try.dot.net的输出结果

每个.NET开发都应掌握的C#集合知识点

2、完美的键值对Dictionary<TKey, TValue>

Dictionary也是C#比较重要的集合之一。Dictionary<TKey, TValue> 提供了一种用于存储键值对的高效方法。你可以根据键快速检索对应的值,如果你需要快速查找和映射数据,使用它效率杠杠的。它是构建缓存、映射和快速查找的理想选择。

案例如下:

 Dictionary<int, Student> studentDictionary = new Dictionary<int, Student>
 {
     { 1, new Student("刘婵") },
     { 2, new Student("关兴") },
     { 3, new Student("张包") }
 };
 Student guanxing = studentDictionary[1]; // 通过ID查找学生
Console.WriteLine(guanxing.Name);//输出结果:刘婵
//声明的记录类型
public record Student(string Name);

3、避免重复的HashSet

HashSet 是一个无序、不重复的元素集合。它实现了 ICollection、IEnumerable 和 ISet 接口。HashSet 使用哈希表存储元素,因此可以快速查找元素。当你需要存储一组唯一的元素时,HashSet是个不错的选择。它确保不会有重复的值存在,这对于数据去重和集合操作非常有帮助。

案例如下:

HashSet<int> likedPosts = new HashSet<int>();
likedPosts.Add(101);
likedPosts.Add(102);
likedPosts.Add(101); // 重复元素不会被添加

foreach (var item in likedPosts)
{
  Console.WriteLine(item);
}
bool alreadyLiked = likedPosts.Contains(101); // 检查是否已存在

4、万能集合操作的LINQ

LINQ(语言集成查询)是为集合而生,它是.NET中的一项强大功能,它允许你在集合中执行各种查询和操作。通过使用 LINQ,你可以轻松地进行过滤、排序、映射等操作,而无需编写繁琐的循环代码。

这里就不举例了,大家可以看我的前一篇文章:每个.NET开发都应掌握的linq知识点

5、 多线程安全的选择“并发集合”

在.NET多线程应用程序中,需要主要集合线程安全地操作。.NET提供了一系列线程安全的集合,如 ConcurrentDictionary<TKey, TValue>、ConcurrentQueue 和 ConcurrentStack。这些集合确保在多线程环境中操作数据时不会线程安全问题。

 ConcurrentDictionary<int, string> onlineUsers = new ConcurrentDictionary<int, string>();
 onlineUsers.TryAdd(1, "关注公众号");
 onlineUsers.TryAdd(2, "DOTNET开发跳槽");
 onlineUsers.TryAdd(3, "获取面试题");
 string user;
 bool found = onlineUsers.TryGetValue(2, out user); // 安全地访问数据
 if (found)
     Console.WriteLine(user);
 //输出:DOTNET开发跳槽

6、C#自定义集合

在C#中,你可以根据需求创建自定义集合类型,以满足特定需求并提供更好的抽象和功能。下面是一个简单的示例,展示创建一个自定义的简单集合类。

using System;
using System.Collections;
using System.Collections.Generic;

// 自定义集合类
public class MyCollection<T> : IEnumerable<T>
{
    private List<T> items = new List<T>();
    // 添加元素
    public void Add(T item)
{
        items.Add(item);
    }
    // 实现IEnumerable<T>接口的GetEnumerator方法
    public IEnumerator<T> GetEnumerator()
    {
        return items.GetEnumerator();
    }
    // 实现非泛型IEnumerable接口的GetEnumerator方法
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}
class Program
{
    static void Main(string[] args)
{
        MyCollection<string> srts = new MyCollection<string>();
        srts.Add("刘邦");
        srts.Add("项羽");
        srts.Add("秦二");
        foreach (var item in srts)
        {
            Console.WriteLine(item);
        }
    }
}

在try.dot.net的输出结果

每个.NET开发都应掌握的C#集合知识点

7、集合与IEnumerable

C#中IEnumerable 接口与集合有紧密的关系。它是一个定义了一组元素的序列,可以被遍历的接口。虽然 IEnumerable 自身并不是集合类型,但是它是许多集合类型的基础接口,包括数组、列表、字典等。

IEnumerable 接口定义了一个方法 GetEnumerator(),它返回一个用于遍历序列的迭代器(IEnumerator)。迭代器提供了一个方式来逐个访问序列中的元素,而不需要暴露集合的内部实现细节。

从这个角度来看,集合类型可以看作是实现了 IEnumerable 接口的类的一种特殊形式。这意味着,如果你的类实现了 IEnumerable 接口,那么你就可以使用 foreach 循环来遍历这个类的实例。

8、集合的三种类型

集合通过它们的命名空间可以分为以下三类:

1)System.Collections.Generic 类

System.Collections.Generic 命名空间中的类提供了通用的泛型集合类型。这些集合在性能和类型安全性方面通常都比非泛型的 System.Collections 类更好。

一些常见的 System.Collections.Generic 类:

List、Dictionary<TKey, TValue>、HashSet

LinkedList(双向链表,适用于插入和删除操作较多的场景。)

Queue 和 Stack(队列和栈)

2)System.Collections.Concurrent 类

System.Collections.Concurrent 命名空间中的类提供了线程安全的集合,适用于多线程环境下的并发操作。这些集合在多线程应用中能够提供更好的性能和可靠性。

一些常见的 System.Collections.Concurrent 类:

ConcurrentDictionary<TKey, TValue>:线程安全的键值对集合。

ConcurrentQueue:线程安全的队列,用于先进先出的数据处理。

ConcurrentStack:线程安全的栈,用于后进先出的数据处理。

3)System.Collections 类

System.Collections 命名空间中的类是 .NET Framework 中早期的集合实现,它们不是泛型的,并且性能相对较低。然而,由于历史原因和向后兼容性,它们仍然在代码中使用。

一些常见的System.Collections 类:

ArrayList、Hashtable、Queue 和 Stack

结语

以上只列出了部分C#集合的详解,C#中还有最基本的数组类型、Queue 和 Stack(队列和栈)、过时的ArryList和hashtable等、感兴趣大家可以去研究一下。C#集合是.NET开发中不可或缺的一部分,有了它们处理数据变得更加容易。通过掌握这些集合知识点,你可以更好地组织和操作数据,编写出更具可读性和性能的代码。

希望本文对你有所收获,对于C#集合的知识点,你还知道哪些?欢迎留言讨论或者吐槽本文。

参考:

1、微软官方文档 :

learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/collections

2、chatgpt文章来源地址https://www.toymoban.com/news/detail-693552.html

来源公众号:DotNet开发跳槽

到了这里,关于每个.NET开发都应掌握的C#集合知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每个.NET开发都应掌握C#泛型的知识点

    C#泛型编程是.NET framework 2.0的新特征,它提高了代码安全性和代码重用的问题。由于泛型必须指定类型,正确的使用可以避免了装箱拆箱的问题;使用了泛型后,可以将算法或组件泛型化,基于类型参数支持任意数据类型,从而提高了代码的重用性。 C#泛型编程在C#是很重要的特

    2024年02月15日
    浏览(39)
  • 每个.NET开发都应掌握的C#特性(Attribute)知识点

    上篇文章讲述了C#反射知识点,本文将介绍C#特性(Attribute)的知识点。C#特性(Attribute)是一种强大的元数据机制,用于为代码元素(如类、方法、属性等)添加信息,以影响它们的行为或提供额外的信息。本文将介绍C#特性每个.NET开发都应熟悉的知识点,希望对大家开发有

    2024年02月08日
    浏览(35)
  • 每个.NET开发都应掌握的C#处理文件系统I/O知识点

    上篇文章讲述了C#多线程知识点,本文将介绍C#处理文件的知识点。在.NET开发领域,文件系统I/O是一个至关重要的主题,尤其是在处理文件、目录和数据存储方面。C#作为.NET平台的主要编程语言,提供了丰富而强大的文件系统I/O功能,为开发人员提供了灵活的工具,使其能够

    2024年02月05日
    浏览(39)
  • 每个.NET开发都应掌握的linq知识点

    LINQ是C#3.0引入的特性,让处理对象就像执行SQL语句一样简单,对于提高C#开发效率有革命性的作用。 对于每个.NET开发者来说,掌握C#的LINQ知识点是非常重要的。LINQ是C#的一个强大的特性,它为数据查询和操作提供了简洁、统一的语法,使得数据处理变得更加直观和灵活。 以

    2024年02月14日
    浏览(42)
  • 更深层次理解Python的 列表、元组、字典、集合(工作面试学习必需掌握的知识点)

    目录 序列介绍 列表  列表的创建 range()创建整数列表   推导式生成列表

    2024年02月22日
    浏览(41)
  • 量化开发必掌握的30个知识点【什么是Level-2数据】

    在许多游戏中,战争迷雾/视野是非常重要的一个元素,通过掌握对手动向,隐藏己方意图,实现“知己知彼,百战不殆”。在证券市场中,Level-2行情数据有着异曲同工之妙。 通常我们使用手机炒股的时候,会有这样的提示信息: 买9上有7890挂单?为啥我只能看到买5? Leve

    2024年02月02日
    浏览(35)
  • 集合基础知识点

    当 Java 程序中需要存放数据的时候,通常会定义变量来实现数据的存储,但是,当需要存储大量数据的时候该怎么办呢?这时首先想到的是数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。 Java 集合类存放在 java.util 包中,

    2024年02月03日
    浏览(49)
  • Java集合基础知识点复习

    主要分为两类: 第一个是Collection 属于单列集合,第二个是Map 属于双列集合在Collection中有两个子接口List和Set。在我们平常开发的过程中用的比较多像list接口中的实现类ArrarList和LinkedList。 在Set接口中有实现类HashSet和TreeSet。 在map接口中有很多的实现类,平时比较常见的是

    2024年04月08日
    浏览(50)
  • 关于磁盘需要掌握得知识点

    扇区是数据的存储单元,物理盘是实际的硬盘驱动器,而位图则是记录磁盘阵列中扇区状态的数据结构。它们之间的关系是,物理盘组成了磁盘阵列,位图用于跟踪每个物理盘中的扇区状态。 物理盘是指实际的硬盘驱动器,它们是磁盘阵列中的物理存储设备。在磁盘阵列中,

    2024年02月10日
    浏览(39)
  • 【前端】快速掌握HTML+CSS核心知识点

    1.HTML核心基础知识 1.1.编写第一个HTML网页 快捷键生成html模板 标签含义 标签名 定义 说明 HTML标签 页面中最大的标签,根标签 文档头部 注意在head标签中我们必须设置的标签是title 文档标题 让页面拥有一个属于自己的标题 文档主体 元素包含文档的所有内容,页面内容 1.2.超

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包